EF 4.1嵌套复杂类型到单个字段

时间:2012-07-17 22:02:28

标签: c# entity-framework-4.1

我似乎无法找到答案,但我想要做的是采用嵌套的复杂类型,并仅使用id将其展平到父表中。

代码如下:

public class Address
{
    public virtual string Street1 { get; set; }
    public virtual string Street2 { get; set; }
    public virtual string City { get; set; }
    public virtual string ZipCode { get; set; }
    public virtual int Id { get; set; }
    public virtual Region Region { get; set; }
}

public class Region
{
    public virtual int Id { get; set; }
    public virtual string Code { get; set; }
}

表结构的定义如下:

CREATE TABLE [ClientManagement].[Addresses]
(
    [Id]            INT IDENTITY(1,1)   NOT NULL,
    [Street1]       [NVARCHAR](100),
    [Street2]       [NVARCHAR](100),
    [City]          [NVARCHAR](100),
    [ZipCode]       [NVARCHAR](15),
    [RegionId]      [INT]
)

有什么方法可以使用EF 4.1来定义这种关系吗?

谢谢你, 德里克

1 个答案:

答案 0 :(得分:0)

试试这个:

[ComplexType]
public class Region
{
    [Column("RegionId")]
    public virtual int Id { get; set; }
    [NotMapped]
    public virtual string Code { get; set; }
}

或此OnModelCreating

modelBuilder.ComplexType<Region>().Ignore(r => r.Code);
modelBuilder.ComplexType<Region>().Property(r => r.Id).HasColumnName("RegionId");