1
在一個簡單的TPH繼承結構的微風模型中,我無法弄清楚如何正確地創建一個新的子類型的微風實體。如何創建派生類的Breeze實體?
例如:
public class Vehicle
{
public string Name { get; set; }
public byte VehicleType { get; set; }
}
public class Car : Vehicle
{
// Some extra properties
}
鑑別不符合使用一個字符串值,以確定一個類的父,所以我們使用一些EF FluentAPI修改元數據的標準實體框架的做法:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Vehicle>()
.Map<Car>(m => m.Requires("VehicleType").HasValue((byte)1));
}
以下代碼的默認行爲似乎在Breeze中創建了合適的實體,但鑑別器值從未設置,因此將更改保存到服務器會導致類型爲Vehicle而不是Car的對象持久化。
var group = breezeManager.createEntity("Car", {
Name: 'My car'
// If the line below is omitted, VehicleType is saved
// to the server with a value of 0
,VehicleType: 1
});
breezeManager.saveChanges();
雖然這似乎是一個關於微風的客戶端組件的行爲問題,這可能是相關的,我們正在使用微風來存儲到未通過實體框架訪問的數據庫(我們只需爲Breeze生成EF元數據即可使用)。
我不認爲客戶端代碼應該擔心我們的繼承鑑別器的實現,所以希望在我們創建每個對象時可以手動設置值。
正確存儲鑑別器值的最佳方法是什麼?
謝謝。沒有意識到這是可選的,但沒有它,如你所建議的那樣,一切都很完美。 – Luckyrat