Entity Framework - CTP4 - Code First - Как отключить автоматическое множественное число?
Моя сущность называется «Контакт», а моя таблица - «Контакт». Тем не менее, поддержка плюрализации по умолчанию заставляет EF4 искать таблицу с именем «Контакты». У кого-нибудь есть идеи как отключить поддержку плюрализации?
это сообщение имеет некоторые подробности о поддержке плюрализации. Но все равно не дает мне ответа.
Я вижу следующий текст вэтот сообщение. Прежде всего, я не знаю, какой физический файл .tt мне нужен для этого изменения. Кроме того, я хочу, чтобы эта функция была отключена только для одного приложения, а не для всех.
Генератор кода в T4 Toolbox имеет множественное включение, включенное по умолчанию в Visual Studio 2010. Если вам нужно сгенерировать DAL без плюрализации, возможно, из соображений совместимости, вы можете отключить эту опцию, добавив следующую строку в файл .tt перед Метод generator.Run () вызывается.
C #
generator.Pluralize = false;
VB
generator.Pluralize = False
*****ОБНОВИТЬ*****
Ниже приведен код, который я использую, и я получаю сообщение об ошибке ниже:
контакт
public class Contact
{
public int ContactID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Title { get; set; }
public DateTime AddDate { get; set; }
public DateTime ModifiedDate { get; set; }
}
Контекст: -
public class AddressBook : DbContext
{
public DbSet<Contact> Contact { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Contact>().MapSingleType().ToTable("dbo.Contact");
}
}
Основная программа: -
using (var context = new AddressBook())
{
var contact = new Contact
{
ContactID = 10000,
FirstName = "Brian",
LastName = "Lara",
ModifiedDate = DateTime.Now,
AddDate = DateTime.Now,
Title = "Mr."
};
context.Contact.Add(contact);
int result = context.SaveChanges();
Console.WriteLine("Result :- " + result.ToString());
}
И я получаю следующую ошибку на "context.Contact.Add (contact);": -
System.InvalidOperationException: модель, поддерживающая контекст 'AddressBook', изменилась с момента создания базы данных. Либо удалите / обновите базу данных вручную, либо вызовите Database.SetInitializer с экземпляром IDatabaseInitializer. Например, стратегия RecreateDatabaseIfModelChanges автоматически удалит и заново создаст базу данных и при необходимости заполнит ее новыми данными. в System.Data.Entity.Infrastructure.CreateDatabaseOnlyIfNotExists1.InitializeDatabase(TContext context) at System.Data.Entity.Infrastructure.Database.Initialize() at System.Data.Entity.Internal.InternalContext.Initialize() at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) at System.Data.Entity.Internal.Linq.EfInternalQuery
1.Initialize () в System.Data.Entity.DbSet1.ActOnSet(Action action,EntityState newState, TEntity entity) at System.Data.Entity.DbSet
1.Добавить (сущность TEntity) в CodeFirst.Client.Program.Main (аргументы String []) в E: \ Ashish \ Research \ VS Solutions \ EntityFramework \ CodeFirstApproach_EF_CTP4 \ CodeFirst.Client \ Program.cs: строка 35
Я уверен, что где-то совершаю глупую ошибку, просто не могу понять. Может ли кто-нибудь дать несколько указаний?
ОТВЕТ С помощью Pault я описал эту проблему и решениеВот.