我的实体名称是“Contact”,我的表名称是“Contact”。但是,默认的复数支持使 EF4 查找名为“Contacts”的表。有人对如何关闭多元化支持有任何想法吗?
这篇文章有一些关于多元化支持的细节。但是还是没有给我答案。
我在这篇文章中看到以下文字。首先,我不知道我需要哪个物理 .tt 文件来进行此更改。另外,我只想为一个应用程序而不是所有应用程序关闭此功能。
T4 Toolbox 中的代码生成器在 Visual Studio 2010 中默认打开复数。如果您需要生成不带复数的 DAL,可能出于兼容性原因,您可以通过在之前的 .tt 文件中添加以下行来关闭此选项调用 generator.Run() 方法。
C#
generator.Pluralize = false;
VB
生成器.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”上下文的模型自创建数据库以来已更改。手动删除/更新数据库,或使用 IDatabaseInitializer 实例调用 Database.SetInitializer。例如,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.Add1.ActOnSet(Action action,EntityState newState, TEntity entity) at System.Data.Entity.DbSet
(TEntity entity) 在 CodeFirst.Client.Program.Main(String[] args) 在 E:\Ashish\ Research\VS Solutions\EntityFramework\CodeFirstApproach_EF_CTP4\CodeFirst.Client\Program.cs:line 35
我确定我在某个地方犯了一个愚蠢的错误,只是无法弄清楚。有人可以提供一些方向吗?
回答 在 Pault 的帮助下,我在这里描述了这个问题和解决方案。