Заменить подчеркивания в Entity Mappings - PullRequest
0 голосов
/ 21 декабря 2011

При использовании EF4 для создания модели я хотел бы заменить все подчеркивания, а также префиксы таблиц / столбцов, чтобы модель читала чисто.Наша база данных имеет такую ​​структуру:

Table:ABC_Customer
-Column:ABC_Customer_Id
-Column:Name
-Column:ABC_Customer_Type_Id

Table:ABC_Customer_Type
-Column:ABC_Customer_Type_Id
-Column:Name

Мне бы хотелось, чтобы имена сущностей были такими:

Entity:Customer
-Property:CustomerId
-Property:Name
-Property:CustomerTypeId
-NavigationProperty:CustomerType

и т. Д. И т. П.

Когдагенерируя файл edmx, конструктор EF называет все сущности в точности так, как они отображаются в базе данных.Я знаю, что это поведение можно изменить с помощью шаблонов T4, но я только что обнаружил, что могу переименовать сущности в конструкторе, который генерирует элементы EntitySetMapping в файле edmx, поэтому T4 кажется излишним.Похоже, я просто хочу постобработать файл edmx, не используя шаблоны T4, так как после этой замены я хочу поведение по умолчанию.Какой подход является наиболее ценным и почему?

Ответы [ 2 ]

1 голос
/ 21 декабря 2011

EDMX отвечает за отображение, и любые новые имена должны быть определены в mapping = в EDMX.

0 голосов
/ 21 декабря 2011

Я бы использовал готовую функциональность, если бы не имел дело с очень большим количеством таблиц.Временные затраты на то, чтобы заставить шаблоны T4 выполнять именно то, что вам нужно, могут не стоить этого.

Для небольшой базы данных я бы остановился на конструкторе, если бы сначала разрабатывал базу данных .

В качестве альтернативы, вы можете сначала набрать код , чтобы получить чистую модель, как вы хотите, указать ее в существующей базе данных и обработать сопоставления в коде для каждого объекта в модели:

public class CustomerConfiguration : EntityTypeConfiguration<Customer>
{
    public CustomerConfiguration()
    {
        Property(t => t.CustomerId).HasColumnName("ABC_Customer_Id");
        ...
    }
}

И затем применить ваши пользовательские конфигурации (то есть сопоставления) к модели, одновременно изменяя сопоставления таблиц:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Configurations.Add(new CustomerConfiguration());

    modelBuilder.Entity<Customer>().ToTable("ABC_Customer");
}

Чем больше я работаю с ней, тем больше мне нравится кодпервый.Новая книга Джулии Лерман Программирование Entity Framework: Code First замечательно!

...