0
的问题是,我收到错误消息阅读:0..1到N引用关系 - >错误消息我不明白
INSERT语句冲突与外键约束“FK_dbo .Users_dbo.People_Id”。冲突发生于数据库 “TrialDb”,表 “dbo.People”,列 'ID'
我尝试implment如下:
User
可能有分配Person
和Person
可能有很多User
转让- 每个实体,即
Person
或任何其他,将有一个创建者和一个不断变化的用户集。
这种关系是单向的,这意味着User
不需要Person
的导航属性。
我在做什么是试图将User
添加到我的数据库,导致上述错误。
这里是User
和Person
类定义(简写为)两个实体
public class User
{
public int Id {get; set;}
public int? PersonId {get; set; }
public virtual Person Person {get; set;}
// two self-refencing properties
public int CreatorId {get; set; }
public virtual Person Creator{get; set;}
public int ChangingUserId {get; set; }
public virtual Person ChangingUser {get; set;}
public byte[] RowVersion {get; set;}
}
public class Person
{
public int Id {get; set;}
public virtual ICollection<User> Users {get; set;}
public byte[] RowVersion {get; set;}
}
我的配置类如下所示:
public class UserMap : EntityTypeConfiguration<User>
{
public UserMap()
{
HasRequired (p => p.Creator).WithRequiredPrincipal().WillCascadeOnDelete (false);
HasRequired (p => p.ChangingUser).WithRequiredPrincipal().WillCascadeOnDelete (false);
// 0..1 : N relation
HasOptional (p => p.Person).WithMany (p => p.Users).HasForeignKey (p => p.PersonId);
Property (p => p.RowVersion).IsRowVersion();
}
}
public class PersonMap : EntityTypeConfiguration<Person>
{
public PersonMap()
{
HasRequired (p => p.Creator).WithRequiredPrincipal().WillCascadeOnDelete (false);
HasRequired (p => p.ChangingUser).WithRequiredPrincipal().WillCascadeOnDelete (false);
// 0..1 : N relations - tried this as well - same result
//HasOptional (p => p.Company).WithMany (p => p.Employees).HasForeignKey (p => p.CompanyId);
//HasOptional (p => p.Facility).WithMany (p => p.People).HasForeignKey (p => p.FacilityId);
Property (p => p.RowVersion).IsRowVersion();
}
}
任何人可以帮助我吗?这将是最重要的apprciated!
谢谢你解答我的问题的答案! – mph