Я использую конструкции 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);
}
}
Спасибо.