2013-05-28 94 views
3

一個簡單的情況,但想不到一個簡單的解決方案。
我有一個表在我的MSSQL數據庫(簡體):
tbUsers通過實體框架插入實體到具有默認值列的表

[ID] [int] IDENTITY(1,1) NOT NULL, 
[FirstName] [nvarchar](25) NOT NULL, 
[DateCreated] [datetime2](7) NOT NULL default GETDATE() 

而且我有一個從數據庫中生成一個實體框架模型,創建一個用戶POCO類我。
我想實現的是,使用我的數據庫上下文這樣

db.Users.Add(new User { Name = "Rony" }); 
db.SaveChanges(); 

時,會生成具有dateCreated會設置爲當前的日期&時間一排。現在發生的情況是,當創建User對象時,DateCreated屬性默認爲DateTime.MinValue,然後db中的行也具有此值。

我想,執行的查詢是:

INSERT INTO dbo.tbUsers 
     ([Name] 
     ,[DateCreated]) 
VALUES 
     ('' 
     ,'0001-01-01 00:00:00.0000000') 

但應該是:

INSERT INTO dbo.tbUsers 
     ([Name]) 
VALUES 
     ('') 

上實現任何幫助,將不勝感激。

回答

2

如果您的數據庫負責設置字段,請將該屬性註釋爲Computed,例如,

[DatabaseGenerated(DatabaseGeneratedOption.Computed)] 

這也可以在EF設計器中設置此字段的屬性。

+0

謝謝。這是我正在尋找的方向,但遺憾的是,當我想更新記錄並將DateCreated設置爲其他內容時,它並不能解決這種情況。我知道這個例子中的DateCreated不應該被更新,但是例如讓我們考慮一個「IsVerified」列,它的創建默認爲false,但將來可能會在用戶通過電子郵件驗證時更改爲true。 – RonLut

+0

你有什麼想法嗎? – RonLut