2012-09-19 117 views
3

根據該源EF代碼優先整數鑑別列

http://weblogs.asp.net/manavi/archive/2010/12/24/inheritance-mapping-strategies-with-entity-framework-code-first-ctp5-part-1-table-per-hierarchy-tph.aspx

應該有可能具有TPH鑑別列是一個整數:

此外,更改鑑別器的數據類型專欄很有趣。 在上面的代碼中,我們將字符串傳遞給了HasValue方法,但此方法已被定義爲接受一種類型的對象:

public void HasValue(object value);

因此,如果例如我們int類型的值傳遞給它然後代碼 首先不僅使用我們所希望的值(即1 & 2) 鑑別器列,但也改變列類型是(INT ,NOT NULL)

modelBuilder.Entity() .MAP(M => m.Requires( 「BillingDetailType」)的HasValue(1)) .MAP(M => m.Requires(「BillingDetailType。 「).HasValue(2));

然而,當我這樣做,在我的代碼,我看到像 「1」 和 「2」 的鑑別器值,但列類型仍然是

爲nvarchar(128),NOT NULL

實際上是否可以指定整數鑑別器列?如果是這樣,怎麼樣?

我敢肯定,我指定我的映射,.HasValue(1)而不是.HasValue( 「1」)

回答

2
modelBuilder.Entity<X>() 
    .Map<X>(m => { m.Requires("BillingDetailType").HasValue(0).HasColumnType("tinyint"); }) 
    .Map<Y>(m => { m.Requires("BillingDetailType").HasValue(1); m.MapInheritedProperties(); }) 
    .Map<Z>(m => { m.Requires("BillingDetailType").HasValue(2); m.MapInheritedProperties(); }) 
    ; 
+7

在代碼中加入某種解釋和/或註釋通常是一個好主意。 – adamdunson