我有个不好写入遗留系统的数据库架构,我的工作与通过EF代码的第一个。目前,我正在映POCO实体和想要创建一个"地址"复杂的类型和使用这种无处不在街道地址的信息被存储。不幸的是,并非所有的地址域名的相同的数据库(ie。一个表中可能有"Address1",而另一个表中将有"Street1",即使它们涉及同样的事情。

有一种方式来创建的定制映射一个复杂的类型的基础上给予实体?这是什么映看起来像什么?

有帮助吗?

解决方案

是的,你可以实现这一口流利的API。这里是一个例子:

public class User
{
    public int UserId { get; set; }   
    public Address Address { get; set; }
}

public class Customer
{
    public int CustomerId { get; set; }   
    public Address Address { get; set; }
}

[ComplexType]
public class Address
{
    public string Street { get; set; }    
    public string City { get; set; }
}

public class Context : DbContext
{    
    public DbSet<User> Users { get; set; }
    public DbSet<Customer> Customers { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {       
        modelBuilder.Entity<User>().Property(u => u.Address.Street)
                                   .HasColumnName("UserStreet");

        modelBuilder.Entity<Customer>().Property(u => u.Address.Street)
                                       .HasColumnName("CustomerStreet");         
    }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top