[英]C# - EF 6 Abstract Navigation Property
我有以下抽象類:
NotaFiscal:
public abstract partial class NotaFiscal
{
public virtual ICollection<NotaFiscalItem> NotaFiscalItens { get; set; }
}
NotaFiscalItem:
public abstract class NotaFiscalItem
{
...
}
將從中生成具體類:
NotaFiscalEntrada:
public class NotaFiscalEntrada : NotaFiscal
{
public int NotaFiscalEntradaId { get; set; }
}
NotaFiscalEntradaItem:
public class NotaFiscalEntradaItem : NotaFiscalItem
{
public int NotaFiscalEntradaItemId { get; set; }
}
問題:抽象類NotaFiscal中的導航屬性是抽象對象的集合,有沒有辦法在具體類NotaFiscalEntrada中導航到集合中的對象,這也是具體的 - NotaFiscalEntradaItem ? 有沒有辦法告訴在具體類NotaFiscalEntrada中,NotaFiscalItem的ICollection將是NotaFiscalEntradaItem,EF會理解這一點並導航到它嗎?
我必須這樣使用它,因為集合的智能(LINQ查詢,總和......等等)都在抽象類中,而其他類如NotaFiscalSaida和NotaFiscalItemSaida將從抽象類創建。 每一個都是數據庫中的一個表。
我正在使用Code First,POCO,EF 6.1和TPC映射。
實體框架不支持通用實體,但它確實支持繼承泛型類的實體
嘗試將您的抽象NotaFiscal
類更改為具有表示每個NotaFiscalItem
的泛型參數:
public abstract class NotaFiscal<T> where T : NotaFiscalItem
{
public abstract ICollection<T> NotaFiscalItems { get; set; }
}
然后在你的具體classe:
public class NotaFiscalEntrada : NotaFiscal<NotaFiscalEntradaItem>
{
public int NotaFiscalEntradaId { get; set; }
public override ICollection<NotaFiscalEntradaItem> NotaFiscalItems { get; set; }
}
這樣,您的具體NotaFiscal
類型將能夠使用每個類型的NotaFiscalItems
屬性公開其具體的NotaFiscalItem
集合。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.