【问题标题】:Code First Entity that doesn't include some required columns?不包含某些必需列的代码优先实体?
【发布时间】:2015-06-04 18:19:11
【问题描述】:

我正在尝试使用 EF6 Code First 将域实体映射到旧版 SQL 数据库。我无权修改数据库架构或创建存储过程。我试图映射的表包含一些我不想弄乱我的域实体的必需列,因为它们与我的程序无关(但它们被其他程序使用)。

问题是我的程序还需要能够向该表添加新行。当我的程序创建新行时,我应该为这些额外的列使用一组值(这些值不是数据库默认值,而是特定于来自我的程序的新行)。我一直在尝试使用EntityTypeConfiguration 来映射所有列,但我找不到为未映射列设置默认创建值的方法。

有什么方法可以让 EF6 了解这些未映射的列并在 INSERT 上设置特定的默认值(但不更改 UPDATE 上的现有值)?

【问题讨论】:

  • 也可以使用命令拦截器,修改命令(不过私有属性更简单!)

标签: c# sql-server entity-framework ef-code-first entity-framework-6


【解决方案1】:

您必须在模型中映射这些列,如果不映射这些属性,则无法创建默认值。您可以做的是在您的模型中将此属性设置为私有,并使用实体框架将地图设置为私有,如本博客http://romiller.com/2013/01/23/ef6-code-first-mapping-all-private-properties-using-custom-conventions/ 中所述,使用反射。

【讨论】:

  • +1 实际上,链接文章中提到的the other article 似乎是最有帮助的。映射私有属性绝对是正确的方法。此外,要回答 OP 问题的另一部分,您可以通过在实体的构造函数中初始化私有属性来设置默认值。
猜你喜欢
  • 1970-01-01
  • 2015-09-06
  • 2015-04-27
  • 1970-01-01
  • 1970-01-01
  • 2011-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多