实体框架映射列,仅当它存在时

时间:2012-02-09 17:14:35

标签: sql entity-framework c#-4.0

我试图找到一种方法来只填充我的实体类的属性,如果查询中存在该列?

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

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

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

任何建议都会很棒!

干杯

1 个答案:

答案 0 :(得分:1)

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

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