エンティティフレームワーク4-カスタムコンプレックスタイプマッピング
-
24-10-2019 - |
質問
最初にEFコードを介して作業しているレガシーデータベーススキーマが不十分に書かれています。私は現在、Pocoエンティティをマッピングしており、「アドレス」の複雑なタイプを作成し、通りの住所情報が保存されている場所でこれを使用したいと考えています。残念ながら、すべてのアドレスフィールドがデータベースで同じ名前が付けられているわけではありません(つまり、1つのテーブルには「address1」があり、別のテーブルには同じものを参照しても「Street1」があります。
特定のエンティティに基づいて複雑なタイプのカスタムマッピングを作成する方法はありますか?そのマッピングはどのように見えますか?
解決
はい、流fluent 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");
}
}
所属していません StackOverflow