其实是一个很常用的场景:某个字段比如是不可为空bit型的,在数据库里设置了默认值为1,对应的属性类型自然是bool.
使用VS2010的模型编辑器更新了Model信息后,进行插入测试,没有对该字段赋值,因为是不可空bool类型,我们知道,在new这个对象的时候,如果没有显示指定,该属性一定是false的。但因为数据库设置了默认值,所以我们希望的结果应该是true。但实际的结果却是false,说明,数据库的默认设置在EF下没起作用。
解决方案:
第一步:手工使用xml编辑器打开edmx文件,找到相应的实体和属性,手工加上如下信息:
<Property Name="IsVisible" Type="bit" Nullable="false" DefaultValue="true" />
第二步:使用模型浏览器,找到相应的实体属性,并设置默认值
保存之后,再次测试,现在结果正常了,如果insert的时候不设置该属性,则会按照数据库的默认设置新增,如果update的时候,就按照具体的字段值来更新了。
从网上搜了下,也找到类似的问题:
该问题不知道在4.1里面修复了没有,如果有用过的朋友请告知 一下,不胜感激。考虑到项目情况,暂时还不打算升级到4.1。