【发布时间】:2013-01-20 11:46:02
【问题描述】:
我的实体联系人必须链接到自身而不是分层模式
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。
相反的接触是可选的,但当它存在时,它们是一对一的。不是亲子。
此关系的名称必须是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);
}
}
【问题讨论】:
-
请编辑您的问题并添加信息究竟是什么“不工作”。你对你的代码有什么期望,实际发生了什么,你看到了什么错误消息/堆栈跟踪?您尝试过什么来解决问题?
-
好吧,我尝试过的事情是随机且毫无意义的,我离“不工作”的解决方案还很远。我根本没有任何解决方案可以展示。让我简化一下我的问题:如何根据我的要求将该 Contact 类绑定到自身?
标签: entity-framework ef-code-first code-first