EF代码优先整数判别列

3
根据此来源。

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类型的值传递给它,那么Code First不仅会在鉴别器列中使用我们想要的值(即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")

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接