实体框架4.0使用数据库默认值

cto*_*orx 6 .net entity-framework

我正在使用Entity Framework 4.0

我们的许多表都有一个名为RowID的列,由DBA用来跟踪内容.列为NON NULLABLE具有映射到函数的数据库默认值.

问题是,EDMX模型要求此属性在实体上具有值,从而使对象的构造变得困难.

我已经阅读了许多关于手动调整EDMX和SSDL文件以使其工作的帖子.这对我们的团队来说是不可行的.

除了在数据库中使列为NULLABLE之外,还有更好的解决方案吗?我不关心获取值,我只是希望数据库能够自己设置它.

Jaz*_*azz 6

您应该直接在SSDL(模型后面的XML)中设置StoreGeneratedPattern ="Computed".

1 - 右键单击​​模型

2 - 选择"打开方式"=> Xml编辑器

3 - 在"模型内容"部分下查找其中一个表的映射

4 - 将StoreGeneratedPattern ="Computed"属性添加到R​​owID列

5 - 对文件进行全局替换,以便每个表都具有StoreGeneratedPattern ="Computed"的RowID定义

注意:如果使用"更新模型向导",则需要再次手动更新XML.我的建议:不要使用向导或将原始和更改的xml行保存到单独的文本文件中,以便在运行向导后让它们可用于进行全局替换.

有关更多信息,请参阅此文章:http: //msdn.microsoft.com/en-us/library/dd296755(v = vs.90).aspx


小智 2

如果 RowID 永远不需要在应用程序上下文中读取或写入,那么它根本不属于您的实体模型。只需使用设计器(右键单击>删除)将其从实体模型中删除,然后让数据库管理它。