アドレス行が 1 つのメンバーにのみ属することができる 1 対 1 スタイルのアドレスを持つメンバー モデルがあります。メンバーがアドレスを所有し、メンバーを削除するとアドレスがカスケード削除されるように、これを定義する方法を見つけようとしています。
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 '*'.
ドキュメントからこれを見つけました-ナビゲーションプロパティが1つだけの1対1
modelBuilder.Entity<OfficeAssignment>()
.HasKey(t => t.InstructorID);
modelBuilder.Entity<Instructor>()
.HasRequired(t => t.OfficeAssignment)
.WithRequiredPrincipal();
うまくいったら機会があればアップします