1

我想在我的MVC模型中使用繼承。 項目中有2個地方可以讓用戶註冊某些設備的損壞。 當它正在移動或僅在庫存盤點期間。 我: 交通運輸 詳細如何映射MVC模型與繼承目前

stockcheck的 StockCheckDetails

的詳細模型都是某種類型的對象的集合。 可以針對單個明細項目製作單個損壞記錄。 我創建了一個可以記錄損傷細節的抽象損傷模型。

所以我當時有2種型號,從傷害 繼承TransportDetailDamage和StockDetailDamage

我TransportDetail記錄就可以有0或1 TransportDetailDamage記錄。 StockCheckDetail記錄也可以有0或1個StockDetailDamage記錄。

我目前的模型(只是運輸和簡潔,刪除大部分的道具):

public class TransportDetail { 
    public int TransportDetailID { get; set; } 

    public int TransportID { get; set; } 
    public Transport Transport { get; set; } 

    public TransportDamage TransportDamage { get; set; } 
} 
public abstract class Damage { 
    public int DamageID { get; set; } 
    public string Description { get; set; } 
} 
public class TransportDamage : Damage { 
    public TransportDetail TransportDetail { get; set; } 
} 

我不斷收到從主端錯誤的alsorts無效定義鍵。 我也非常希望能夠定義使用流利的API中的字段名稱,所以我不TransportDamage_DamageID等的喜好最終

編輯: OK我也補充說,似乎讓一些流利的API該模型正常工作,但它似乎並不完全正確,TransportDetail肯定可以有可選TransportDamage但TransportDamage需要TransportDetail存在.... 。地圖覆蓋了數據庫中可怕的自動字段名稱通過:)

modelBuilder.Entity<TransportDetail>() 
    .HasOptional(x=>x.TransportDamage) 
    .WithOptionalPrincipal(x=>x.TransportDetail) 
    .Map(t=>t.MapKey("TransportDetailID")); 

這是最好的方法嗎?

回答

0

可能是這個問題是由於類的屬性定義。您已經在TransportDetail類中定義了「TransportDamage」類型的屬性,在TransportDamage類中定義了類型爲「TransportDetail」的屬性。

+0

是的,據我所知,如何提供兩個實體之間的導航? – Pyrobri 2014-11-06 15:07:48