Entity Framework 4.0 的一个bug :DefaultValue问题
其實是一個很常用的場景:某個字段比如是不可為空bit型的,在數據庫里設置了默認值為1,對應的屬性類型自然是bool.
使用VS2010的模型編輯器更新了Model信息后,進行插入測試,沒有對該字段賦值,因為是不可空bool類型,我們知道,在new這個對象的時候,如果沒有顯示指定,該屬性一定是false的。但因為數據庫設置了默認值,所以我們希望的結果應該是true。但實際的結果卻是false,說明,數據庫的默認設置在EF下沒起作用。
解決方案:
第一步:手工使用xml編輯器打開edmx文件,找到相應的實體和屬性,手工加上如下信息:
<Property Name="IsVisible" Type="bit" Nullable="false" DefaultValue="true" />第二步:使用模型瀏覽器,找到相應的實體屬性,并設置默認值
保存之后,再次測試,現在結果正常了,如果insert的時候不設置該屬性,則會按照數據庫的默認設置新增,如果update的時候,就按照具體的字段值來更新了。
從網上搜了下,也找到類似的問題:
可參考:https://connect.microsoft.com/VisualStudio/feedback/details/505178/storegeneratedpattern-property-in-ado-net-entity-model-designer-sets-cdsl-annotation-but-not-ssdl-attribute#
http://connect.microsoft.com/VisualStudio/feedback/details/611665/storegeneratedpattern-does-not-saved-properly-into-edmx-entity-framework-4-0
該問題不知道在4.1里面修復了沒有,如果有用過的朋友請告知 一下,不勝感激。考慮到項目情況,暫時還不打算升級到4.1。
轉載于:https://www.cnblogs.com/qiuliang/archive/2011/09/07/2170181.html
總結
以上是生活随笔為你收集整理的Entity Framework 4.0 的一个bug :DefaultValue问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 委托/事件的重写
- 下一篇: HTML简单实例加表单的显示效果