Entity Framework的預設值BUG解決方法

於為源發表於2013-11-27

 在使用.Net 3.5裡的Entity Framework開發網站的時候,遇到了一個問題:新增記錄時,對於DateTime型的資料,無法使用資料庫的預設值。

  具體的情況是這樣的,我的資料庫有個Users表,三個欄位,id,username,createtime。

  id是int型,自增長,主鍵

  username是nvchar(10)型,不允許為空

  createtime是DateTime型欄位,不允許為空,預設值 是getdate()

  如果用Entity框架生成實體類,直接新增資料,不指定createtime,那就會在SaveChanges時出錯:

            using (LinqDemoEntities lde = new LinqDemoEntities())
            {
                Users user = new Users
                {
                    name = "Admin"
                };
                lde.AddToUsers(user);
                lde.SaveChanges();
            }

  查詢了很多資料之後,才知道這是Eentities FrameWork的一個Bug,需要將edmx檔案裡,createtime欄位加上 StoreGeneratedPattern="Identity" 屬性才行。

  方法是:找到edmx檔案,然後用文字工具開啟,找到對應的欄位屬性,新增StoreGeneratedPattern=“Identity”屬性,然後儲存退出,就行了。

  之後,重新執行上述的語句,就會用預設值插入到資料庫了。

相關文章