我的实体名称是“联系人”,我的表名是“联系人”。但是,默认的多元化支持使EF4查找名为“联系人”的表。任何人有关于如何关闭多元化支持的想法?实体框架 - CTP4 - 代码优先 - 如何关闭自动复数?
This发布了一些关于多元化支持的细节。但仍然没有给我一个答案。
我在this后看到以下文字。首先,我不知道我需要做出这个改变的物理.tt文件。此外,我希望只在一个应用中关闭此功能,而不是全部关闭。
在T4工具箱中的代码生成器具有 的多元化在Visual Studio 2010中如果需要 产生DAL没有 多元化,也许 兼容性原因默认开启 ,你可以把 这个选项通过在 generator.Run()方法被调用之前将 以下行添加到.tt文件中。
C#
generator.Pluralize = false;VB
generator.Pluralize =假
***** 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(接触);” -
系统.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.DbSet1.ActOnSet(Action action,EntityState newState, TEntity entity) at System.Data.Entity.DbSet
1.增加(TEntity 实体)在 CodeFirst.Client.Program.Main(字符串[] args)在E:\ Ashish \ Research \ VS Solutions \ EntityFramework \ CodeFirstApproach_EF_CTP4 \ CodeFirst.Client \ Program。CS:line 35
我确信我在某个地方犯了一个愚蠢的错误,只是无法弄清楚。有人可以提供一些指导吗?
ANSWER 随着Pault的帮助下,我描述这个问题和解决方案here。
..作为一个便笺:在我看来,保持表名的复数是一种很好的做法。它们代表一组条目,而不是一个条目。 – 2010-09-05 19:52:13
+1 Arve,我同意。但是,您可以了解我无法更改现有数据库中的表名称。 – 2010-09-06 06:07:42