我在ORM中使用EFv4,我只是尝试将一条记录插入到一个表中,该表的多个列标记为不可空,默认值为空字符串(对于nvarchar类型列)。问题是,EF不会获取该列的默认值,而且当我创建实体的实例时,会留下一些字符串属性null,然后尝试将其保存在DB表中,会出现异常(说我应该放松对dataset的约束设置)。
因此,虽然空字符串的默认值在中工作(如果我离开emtpy列,它将自动插入emtpy字符串),但它在EF中不起作用。
我必须说,我以前在uniqueidentifier主键列中确实注意到了这一点,但是现在我看到没有任何关于列的默认值的信息使它进入EF模型,不管列是什么。
还有人注意到这个吗?有什么解决办法吗?
如果有人知道的话,在最新的EF功能CTPs中是否有任何改进?
发布于 2010-12-27 17:42:21
我不认为这是EF问题。L2S也做同样的事情。“问题”在于,当您将一行插入到表中时,EF / L2S实际上是在insert语句中包含该列,该列的值为空。当像这样进行插入时,不使用默认值。
您可能必须执行我们在DAL中所做的工作,即在执行插入之前用默认值替换空值。
发布于 2010-12-27 19:39:15
我已经发现,我在Management中创建表时分配的默认值,在我执行“从数据库创建模型”时没有将其放入EF模型,但是如果在server中设置默认值,然后在EF模型中设置默认值,那么当我创建对象时,它们会附带在object....have中设置的默认值--您尝试过这样做吗?
编辑:对于字符串,您需要像下面这样直接编辑EDMX文件:
<Property Type="String" Name="Listing" MaxLength="Max" FixedLength="false" Unicode="false" DefaultValue="" />https://stackoverflow.com/questions/4540554
复制相似问题