次のドメイン オブジェクトがあります。
public class Person
{
public int Id {get; set;}
public int? FatherId {get; set;}
public int? MotherId {get; set;}
public int? HomeChurchId {get; set;}
public int? BirthCountryId {get; set;}
public Parent Father {get; set;}
public Parent Mother {get; set;}
public Church HomeChurch {get; set;}
public Country BirthCountry {get; set;}
}
public class Parent
{
public int Id {get; set;}
...
}
public class Church
{
public int Id {get; set;}
...
}
public class Country
{
public int Id {get; set;}
...
}
Person をマッピングする場合、これらのプロパティはすべてほぼ同じ方法でマッピングされます。
HasOptional(p => p.Father).WithMany().HasForeignKey(p => p.FatherId);
HasOptional(p => p.BirthCountry).WithMany().HasForeignKey(p => p.BirthCountryId);
...
問題は、BirthCountry で Person をクエリしようとすると、次のエラーが表示されることです。
One or more validation errors were detected during model generation:
System.Data.Entity.Edm.EdmAssociationType: : Multiplicity conflicts with the
referential constraint in Role 'Person_BirthCountry_Target' in relationship
'Person_BirthCountry'. Because all of the properties in the Dependent Role are
non-nullable, multiplicity of the Principal Role must be '1'.
BirthCountry プロパティ (およびマッピング) を削除すると、すべて正常に動作します。私が混乱しているのは、BirthCountry が Person の他のすべての null 許容プロパティと同じように設定されていることです。他のプロパティで同じエラーが発生しないのはなぜですか?
あなたが提供できるどんな助けにも感謝します!