Мое имя объекта - "Контакт", а имя моей таблицы - "Контакт". Тем не менее, поддержка плюрализации по умолчанию заставляет EF4 искать таблицу с именем «Контакты». У кого-нибудь есть идеи как отключить поддержку плюрализации?
В этом посте есть некоторые подробности о поддержке плюрализации. Но все равно не дает мне ответа.
Я вижу следующий текст в этом сообщении. Прежде всего, я не знаю, какой физический файл .tt мне нужен для этого изменения. Кроме того, я хочу, чтобы эта функция была отключена только для одного приложения, а не для всех.
Генератор кода в T4 Toolbox имеет
плюрализация включена по умолчанию
в Visual Studio 2010. Если вам нужно
генерировать DAL без
плюрализация, возможно, для
причины совместимости, вы можете включить
эта опция отключена путем добавления
следующая строка в файл .tt перед
Вызван метод generator.Run ().
C #
generator.Pluralize = false;
VB
generator.Pluralize = False
***** UPDATE *****
Ниже приведен код, который я использую, и я получаю сообщение об ошибке, приведенное ниже: -
Контакт
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:
модель поддержки "адресной книги"
контекст изменился, так как база данных
был создан. Либо вручную
удалить / обновить базу данных или позвонить
Database.SetInitializer с
Экземпляр IDatabaseInitializer. За
Например,
RecreateDatabaseIfModelChanges
Стратегия автоматически удалит и
воссоздать базу данных и, при необходимости,
заполнить его новыми данными. в
System.Data.Entity.Infrastructure.CreateDatabaseOnlyIfNotExists 1.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.DbSet 1.ActOnSet(Action
action,EntityState newState, TEntity
entity) at
System.Data.Entity.DbSet
1.Add (TEntity
субъект) в
CodeFirst.Client.Program.Main (String []
args) в E: \ Ashish \ Research \ VS
Решения \ EntityFramework \ CodeFirstApproach_EF_CTP4 \ CodeFirst.Client \ Program.cs: строка 35
Я уверен, что где-то совершаю глупую ошибку, просто не могу понять. Может ли кто-нибудь дать несколько указаний?
ОТВЕТ
С помощью Pault я описал эту проблему и решение здесь .