在使用.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”屬性,然後儲存退出,就行了。
之後,重新執行上述的語句,就會用預設值插入到資料庫了。