Entity Framework 4 - Пользовательское картирование комплекса типа
-
24-10-2019 - |
Вопрос
У меня есть плохо написанная схема базы данных Legacy, с которой я сначала работаю через EF Code. В настоящее время я картирую объекты POCO и хотел бы создать комплексный тип «адреса» и использовать его везде, где хранится информация о адресах уличного адреса. К сожалению, не все поля адреса называются одинаковыми в базе данных (т.е. одна таблица может иметь «адрес1», в то время как у другой таблицы будет «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