2011-09-25 2 views
1

Я использую конструкции Code First для подключения к существующей базе данных (которая, я знаю, не является технически технически первой). Я делаю это так, что могу издеваться над Fake Data Repositories, используя LINQ to Entities вместо LINQ to SQL. В CTP3 в прошлом году это сработало отлично - я мог бы создать новую конфигурацию для своей таблицы и явно добавить свойства POCO, которые были сопоставлены с базой данных.Отключить или отключить автоматическую генерацию сопоставлений на основе свойств POCO

В июле 2011 года Code First был включен в EF4.1, поэтому я решил, что буду обновляться. К сожалению, EF теперь слишком умна для меня. Например, a) все свойства моих POCOs предполагается сопоставлены с полями базы данных, поэтому, например, свойство Person.TempPassword {get; set;} заставляет сгенерированный SQL искать столбец TempPassword в моей таблице Person; б) если я наследую класс из своего POCO (например, Employee наследует от Person), EF начинает генерировать столбцы дискриминатора и т. д.

Я знаю, что я могу решить прежнюю проблему, используя атрибуты Ignore() или [NotMapped] , но это большая проблема, и я бы предпочел не делать этого. Последнюю проблему я не могу решить.

Все, что мне нужно - это способ отключить все эти умственные способности и просто дать мне явное задание свойств, как я делал. Обратите внимание, что я попытался удалить все одно из ограничений, например modelBuilder.Conventions.Remove();

Я также преодолел вызов OnModelCreating() и НЕ вызвал base.OnModelCreating(), просто включил мой собственный код конфигурации, как показано ниже.

Пример моей конфигурации:

public class AddressBookConfiguration : EntityTypeConfiguration<AddressBook>{ 
    public AddressBookConfiguration() 
    { 
    this.HasKey(x => x.AddressBookID); 
    this.ToTable("AddressBook"); 
    this.Property(x => x.AddressBookID); 
    this.Property(x => x.AddressBookName); 
    this.Property(x => x.WhenCreated); 
    this.Property(x => x.TotalItems); 
    } 
} 

Спасибо.

ответ

0

Путь, который я обычно предпринимаю, когда необходимо расширять функциональность классов Entity Framework, заключается в том, чтобы генерировать Data Model прямо из базы данных, а не использовать Extension Methods.

Я знаю, что этого недостаточно, и вы не можете создавать свойства таким образом. Однако, боюсь, это может быть лучше всего.

Смежные вопросы