我有一個使用[DatabaseGenerated(DatabaseGeneratedOption.Computed)]屬性的EF5碼的第一個項目。該選項覆蓋了我的設置。實體框架5:使用DatabaseGeneratedOption.Computed選項
考慮這個SQL表:
CREATE TABLE Vehicle (
VehicleId int identity(1,1) not null,
Name varchar(100) not null default ('Not Set')
)
我使用的是SQL默認的構造設置[名]的情況下沒有設置。
在後面的代碼,我有一個類定義類似於:
public class Vehicle {
...
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public string ShoulderYN { get; set; }
}
當我在代碼更新實體,在默認設置的值將覆蓋我的新的設置。
在代碼中,我有(僞):
vehicle.Name = 'Update Name of Vehicle';
_dbContext.Update(vehicle);
_dbContext.SaveChanges();
預期的結果是Vehicle.Name = '車輛更新名稱'。
實際的結果是Vehicle.Name = '未設置'。
EF5有沒有一種方法可以說「如果Vehicle.Name爲空/空,使用數據庫中定義的值?否則,如果我在代碼中設置值,我想使用此值。
謝謝。
Steve
爲什麼此行爲不是默認提供的?這背後的好處是什麼?例如,我確定DB中一列表中的默認日期(notnull)。但如果沒有代碼發送值,EF會發送最短日期時間。我真的找不到任何邏輯。 –