簡體   English   中英

實體框架代碼優先TPH,其中鑒別符大於0

[英]Entity Framework code first TPH where discriminator is greater than 0

我在EF4 CTP5中定義一個模型,僅在id的值大於0時才需要映射繼承的實體。代碼看起來像這樣。

public class Parent
{
   public int ID { get; set; }
   public string FirstName { get; set; }
   public string LastName { get; set; }
}

public class Child : Parent
{
   public int SchoolID { get; set; }
}

在OnModelCreating方法中...

modelBuilder.Entity<Parent>().Map<Child>(
            reg => 
                {
                reg.MapInheritedProperties();
                reg.Requires("SchoolID").HasValue((int)<value greater than 0); <== Pseudo code
            }).ToTable("Users");

這種事情可能嗎? 如果不是,是否可以完全忽略歧視者?

不確定“是否可能”部分,但是聞起來有點。 我的意思是,它暗示着數據中真正不應該存在的含義; 您將面臨長期可維護性問題。 鑒別符不僅可以幫助ORM找出哪條記錄屬於哪種類型,還應該(imo)您正在處理的類型的邏輯描述,以供人類在對db運行SQL查詢時使用。 它還可以用於幫助索引分區。 我意識到無論如何TPH都是非規范化的,但是您仍然希望能夠設計一個索引良好的數據庫。

我建議您讓EF根據類型名稱為您做區分符,默認名稱為iirc。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM