我有一個地址在一對一的風格,其中一個地址行只能屬於一個成員的成員模型。我試圖找出如何定義這個,所以會員擁有地址和地址級聯刪除,當我刪除一個成員。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的關係。我現在也粘貼了一個代碼。 –