sql - 仅当 Entity Framework 映射列存在时

标签 sql entity-framework c#-4.0

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

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

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

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

任何建议都会很棒!

干杯

最佳答案

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

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

关于sql - 仅当 Entity Framework 映射列存在时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9215510/

相关文章:

c# - EF : Create/Remove relation from Many-to-Many relations when `AutoDetectChangesEnabled` and `ProxyCreationEnabled` are disabled on DbContext

.net - C# 中的运算符重载和 Linq Sum

mysql - 在 MySql 中锁定表

sql - Oracle 子查询

php - 数据未进入表(mySQL)(没有出现错误)

entity-framework - 为什么要使用 fluentmigrator?

c# - 真实项目依赖注入(inject)的 F# 模拟

c# - 如何在字典中分配键=>值对?

c#-4.0 - 如何正确实现 MediaTypeFormatter 来处理 'multipart/mixed' 类型的请求?

mysql - SELECT INTO 局部变量未声明?