我想引用每个参考对象的不同类型的联系人。 我有我想扩展的给定EF结构。
public class Contact {}
public class Customer : Contact {}
public class Salesperson : Contact {}
public class Producer : Contact {}
public class ContactPerson : Contact {}
首先是代码,数据库包含以下表格:客户,销售人员,生产者和联系人(没有联系表)。
现在我想在这些实体之间创建引用。例如。两个客户之间的子女关系或为客户或制作人设置联系人。我想为这些不同的关系使用一个关系类。
我的想法是创建一个像这样的ContactRelation:
public enum RelationRole : short {
Child,
ContactPerson,
Head
}
public class ContactRelation {
Guid ParentId { get; set; }
string ParentType { get; set; }
Guid ChildId { get; set; }
string ChildType { get; set; }
RelationRole Role { get; set; }
}
但我想让关系真正引用联系人,所以我可以轻松处理它们。有没有办法教EF这种参考?我需要这样的东西(在每个ContactType中)
public class Customer : Contact {
[ForeignKey("ParentId")]
//PSEUDO CODE! How to achieve something like this???
[Discriminator("ParentType", "Customer")]
public ICollection<ContactRelations> Children { get; set; }
[ForeignKey("ChildId")]
//PSEUDO CODE! How to achieve something like this???
[Discriminator("ChildType", "Customer")]
public ICollection<ContactRelations> Children { get; set; }
}
如何将此教授给EF并在将ContactRelations添加到集合时正确设置类型?
编辑可能最后一部分应该是基类联系
的一部分