階層モードではなく、それ自体にリンクする必要があるエンティティContactがあります
public partial class Contact
{
[Key, Column(Order = 0)]
public int AgentId { get; set; }
[Key, Column(Order = 1)]
public int ContactId { get; set; }
public virtual Contact Opposite { get; set; }
public ..... many other properties
}
すべての連絡先には反対のContact
リンクがありON c1.AgentId = c2.ContactId AND c1.ContactId = c2.AgentId
ます。反対側の接点はオプションですが、存在する場合は1対1で等しくなります。親子ではありません。この関係の名前はである必要がありますOpposite
。私はすでにContact
クラスでプロパティを宣言しています。今、私は関係を設定しようとしていますが、これは機能しておらず、適切に設定する方法がわからないように感じます。ご意見をお聞かせください?
public class EFDbContext : DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
Action<ForeignKeyAssociationMappingConfiguration> mapKey = x => x.MapKey("ContactId", "AgentId");
modelBuilder.Entity<Contact>().HasOptional<Contact>(c => c.Opposite).WithRequired().Map(mapKey);
}
}