4

如果我有这样的类型

public class SomeType
{
    public string Text { get; set; }
    // Other properties that are not mapped...
}

其中只有一个字符串类型的映射属性,如何将所有对 SomeType 的引用映射到一个简单的文本列(SomeType.Text 的值),从而避免生成 SomeType 表?

4

1 回答 1

1

如果SomeType未定义为实体(即DbSet<SomeType>在您的上下文中没有),那么它是一个复杂类型,它的值将与使用您的复杂类型的实体存储在同一个表中。所以,如果你有这样的实体Customer

public class Customer
{
    public SomeType Foo { get; set; }
    // other members
}

然后在Customers表中你将有列Foo_TextSomeType不会创建单独的表 for 。复杂类型的唯一限制是您不能null对它们有价值。


EntityPropertyName_ComplexTypePropertyName如果默认列名不适合您的需要,您还可以为您的复杂类型指定映射:

modelBuilder.ComplexType<SomeType>()
            .Property(st => st.Text).HasColumnName("Text");
于 2013-06-16T13:05:58.070 回答