可能会过度思考,但我正试图建立以下关系。我有一个Organization对象。每个组织都可以拥有许多AuthorizedThirdParties。 AuthorizedThirdParties也是组织。我该如何做到这一点?对于某些情况。授权的第三方是一种说法“这个特定的组织(不是我)可以访问关于我的组织的某些信息”的方式。
组织模式(为简洁而修剪):
public class Organization
{
[Key]
public int OrganizationId { get; set; }
public string Name { get; set; }
public virtual ICollection<Organization> AuthorizedThirdParties { get; set; }
}
我正在考虑做一些流利的API,但似乎无法弄清楚如何。我已经建立了一些其他m2m关系,但每个都引用了不同的模型(如组织和用户)。
答案 0 :(得分:1)
你不是在思考它。数据结构很复杂,应该正确完成。您描述的数据结构是graph
。表示图表的方法有很多种。其中包括:
根据您的预期用途,每个人都有自己的利弊。要获得起点,请点击维基百科:
最好的办法是研究如何表示数据以及如何存储数据,这里是一个起始链接:
答案 1 :(得分:1)
如果关系是多对多(组织可以有许多AuthorizedThirdParties
,组织可以是许多其他组织的授权第三方),您只需使用标准映射。目标实体是相同还是不同没有什么特别之处:
modelBuilder.Entity<Organization>()
.HasMany(o => o.AuthorizedThirdParties)
.WithMany()
.Map(m =>
{
m.ToTable("AuthorizedThirdPartyMap");
m.MapLeftKey("OrganizationId");
m.MapRightKey("AuthorizedThirdPartyId");
});