我有一个使用EF 4.1的项目。
在数据背景下:
public DbSet<Customer> Customer { get; set; }
protected override void OnModelCreating(System.Data.Entity.ModelConfiguration.ModelBuilder modelBuilder) { }
实体模型类:
[Table("User",SchemaName="dbo")]
public class User{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
运行应用程序后,我遇到了以下错误。
无效的对象名称dbo.User
为什么呢?有什么问题?
答案 0 :(得分:2)
你的OnModelCreating方法有什么用?
尝试删除默认的多个表名:
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
答案 1 :(得分:0)
如果您正在使用配置映射(EntityTypeConfiguration
)类来定义表,如果您忘记将表的Configuration类附加到模型构建器,则会出现此错误。
在我的情况下,它真的让我感到困惑,因为我已经有另一个表(SomeThing
)在这个Context类中完美地工作了。只需添加一个新表(OtherThing
),其中似乎的所有内容都与第一个相同,我就会收到错误:Invalid object name 'dbo.OtherThings
。
答案在我的Context类中:
public DbSet<SomeThing> SomeThings { get; set; }
public DbSet<OtherThing> OtherThings { get; set; }
...
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new SomeThingMap());
// OOPS -- Forgot to add this!!
modelBuilder.Configurations.Add(new OtherThingMap());
}
供参考,这是我的SomeThingMap
课程:
public class SomeThingMap : EntityTypeConfiguration<SomeThing>
{
public SomeThingMap()
{
...
this.ToTable("SomeThing");
...
}
}
我的新OtherThingMap
课程:
public class OtherThingMap : EntityTypeConfiguration<OtherThing>
{
public OtherThingMap()
{
...
this.ToTable("OtherThing");
...
}
}
这是一个很长的镜头,但我希望至少可以帮助其他人指出正确的方向。