【发布时间】:2017-10-19 15:18:30
【问题描述】:
想想这个典型的一对多关系:
public class Parent
{
public int ID { get; set; }
public virtual List<Child> Children { get; set; }
}
public class Child
{
public int ID { get; set; }
public int ParentID { get; set; }
public virtual Parent ParentEntity { get; set; }
}
现在,如果这些实体与完全不同的业务层相关,而我们想在不同的程序集中声明它们呢?由于父实体需要知道其子实体类型,因此父实体需要引用子实体,反之亦然,从而创建循环引用。
我想到了三个问题:
- 在不创建程序集之间的循环依赖关系的情况下,是否有任何非 hacky 方法来实现这一点?
- 如果上述情况属实,是否意味着唯一受支持的方法是将来自特定上下文的所有实体存储在同一程序集中? (如果您在单个数据库中有任何单独的不相关表集,为什么它们首先会属于同一个数据库?)
- 您能否争辩说,如果它们与数据库相关,那么它们必然与业务相关,因此实体属于同一类?我想这个假设将取决于具体案例,但如果有人对此有强烈的感觉,我想听听关于这个主题的最佳实践的一些想法。
我知道网站上还有其他标题相似的问题,唯一真正提到相同概念的问题是this one,但它可能已经过时了,我发现问题及其唯一答案都非常模糊。
提前致谢
【问题讨论】:
标签: .net entity-framework entity-framework-core