我有一个地址在一对一的风格,其中一个地址行只能属于一个成员的成员模型。我试图找出如何定义这个,所以会员拥有地址和地址级联删除,当我删除一个成员。EF代码第一个模型定义一对一映射级联删除
public class Member
{
[Key]
public int Id { get; set; }
[Required]
[ForeignKey("Address")]
public int AddressId { get; set; }
public virtual Address Address { get; set; }
}
我也有地址
public class Address : IEntity
{
[Key]
public int Id { get; set; }
....
}
我试过下面让地址级联删除
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder
.Entity<Member>()
.HasRequired(m => m.Address)
.WithRequiredDependent()
.WillCascadeOnDelete(true);
}
而且
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder
.Entity<Member>()
.HasRequired(m => m.Address)
.WithRequiredPrinciple()
.WillCascadeOnDelete(true);
}
有人能帮助这里把我放在正确的轨道上?迁徙失败,行数如下。
System.Data.Entity.ModelConfiguration.ModelValidationException: One
or more validation errors were detected during model generation:
System.Data.Entity.Edm.EdmAssociationEnd: : Multiplicity is not valid
in Role 'Member_Address_Source' in relationship 'Member_Address'. Because the
Dependent Role properties are not the key properties, the upper bound of the
multiplicity of the Dependent Role must be '*'.
发现这个从docs - 一对一只有一个导航属性
modelBuilder.Entity<OfficeAssignment>()
.HasKey(t => t.InstructorID);
modelBuilder.Entity<Instructor>()
.HasRequired(t => t.OfficeAssignment)
.WithRequiredPrincipal();
我会后,如果它的工作原理,当我得到一个机会
难道不会创建多对一的关系吗?一个成员可能有许多地址实体?我明白我是怎么犯了一个错误的,尽管我应该说一个地址只能有一个成员 – Neil
那么如果地址只能有一个成员,那么你就有1对1的关系。我现在也粘贴了一个代码。 –