【发布时间】:2014-02-25 05:28:05
【问题描述】:
我有这些模型:
public class Person
{
public int PersonId { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
public class Student : Person
{
public int Payment { get; set; }
}
public class Teacher : Person
{
public int Wage { get; set; }
}
在数据库中,我有两个名为Teachers 和Students 的表。我想使用实体框架的 TPC 映射。我的上下文类是:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Person>()
.Property(i => i.PersonId)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
modelBuilder.Entity<Teacher>().Map(m =>
{
m.MapInheritedProperties();
m.ToTable("Teacher", "dbo");
});
modelBuilder.Entity<Student>().Map(m =>
{
m.MapInheritedProperties();
m.ToTable("Student", "dbo");
});
}
但是当我想添加老师时,我得到了这个错误:
对数据库的更改已成功提交,但在更新对象上下文时出错。 ObjectContext 可能处于不一致的状态。内部异常消息:AcceptChanges 无法继续,因为对象的键值与 ObjectStateManager 中的另一个对象冲突。在调用 AcceptChanges 之前确保键值是唯一的。
这里有什么问题?
【问题讨论】:
-
我知道,但我不能说。
标签: c# entity-framework-5