首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实体框架针对Server不可空列创建

问实体框架针对Server不可空列创建
EN

Stack Overflow用户
提问于 2010-12-27 17:36:34
回答 2查看 217关注 0票数 1

我在ORM中使用EFv4,我只是尝试将一条记录插入到一个表中,该表的多个列标记为不可空,默认值为空字符串(对于nvarchar类型列)。问题是,EF不会获取该列的默认值,而且当我创建实体的实例时,会留下一些字符串属性null,然后尝试将其保存在DB表中,会出现异常(说我应该放松对dataset的约束设置)。

因此,虽然空字符串的默认值在中工作(如果我离开emtpy列,它将自动插入emtpy字符串),但它在EF中不起作用。

我必须说,我以前在uniqueidentifier主键列中确实注意到了这一点,但是现在我看到没有任何关于列的默认值的信息使它进入EF模型,不管列是什么。

还有人注意到这个吗?有什么解决办法吗?

如果有人知道的话,在最新的EF功能CTPs中是否有任何改进?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-27 17:42:21

我不认为这是EF问题。L2S也做同样的事情。“问题”在于,当您将一行插入到表中时,EF / L2S实际上是在insert语句中包含该列,该列的值为空。当像这样进行插入时,不使用默认值。

您可能必须执行我们在DAL中所做的工作,即在执行插入之前用默认值替换空值。

票数 3
EN

Stack Overflow用户

发布于 2010-12-27 19:39:15

我已经发现,我在Management中创建表时分配的默认值,在我执行“从数据库创建模型”时没有将其放入EF模型,但是如果在server中设置默认值,然后在EF模型中设置默认值,那么当我创建对象时,它们会附带在object....have中设置的默认值--您尝试过这样做吗?

编辑:对于字符串,您需要像下面这样直接编辑EDMX文件:

代码语言:javascript
复制
<Property Type="String" Name="Listing" MaxLength="Max" FixedLength="false" Unicode="false" DefaultValue="" />
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4540554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档