【问题标题】:Entity framework map column only if it exists实体框架映射列仅当它存在时
【发布时间】:2012-02-09 17:14:35
【问题描述】:

如果查询中存在该列,我正在尝试寻找一种仅填充实体类属性的方法?

当我使用 DbSet.SqlQuery 执行查询并返回填充的列(这是一个别名)时,一切都很好。但是当使用 All()、Find()、ToArray() 等内置功能时,它希望该列在数据集中。

有没有办法(无需手动编写所有支持查询)将我的实体类中的属性标记为可选。

它目前被标记为可为空的 DateTime,但框架在使用内置功能时仍然抱怨它不存在。

任何建议都会很棒!

干杯

【问题讨论】:

    标签: sql entity-framework c#-4.0


    【解决方案1】:

    不,因为他们必须构建 SQL 查询。一个列是否可以为空并不重要,重要的是当他们构建查询时,如果该列不存在,那么数据库可能会抛出一个错误,抱怨该列不存在。

    解决它的唯一方法是不映射它,或者在映射时查询架构并有条件地映射属性(尽管我不建议这样做)。

    【讨论】:

    • 呃,谢谢达伦。我记得有一个从 DbSet 填充实体类的虚拟方法。如果我没记错的话,如果值存在于行中,我也许可以覆盖它并设置“notmapped”属性?再次感谢。
    猜你喜欢
    • 2020-03-02
    • 1970-01-01
    • 2010-10-09
    • 2017-10-23
    • 1970-01-01
    • 2011-03-13
    • 1970-01-01
    • 2021-06-01
    • 2016-02-21
    相关资源
    最近更新 更多