1

该项目是一个模块化的形式。每个模块都位于一个单独的 Laibary 中。但有时需要在模块之间进行通信。例如,在 EF 中创建关系。但是当我做得很好时,将项目 A 的引用添加到 B 通常不是问题。但是当我想将B的项目引用添加到A时,遇到以下错误。

无法添加对的引用。将此项目添加为参考将导致循环依赖

每个模块都是h代码的一个项目,每个模块都位于一个项目中。每个模块都有自己的Domain字段,并且定义了它的属性。(ORM) 使用 EF。有时他们会接触到模块。例如,一个模块作为希望相互通信的新闻评论。几个有关系。

但是要插入这个关系的引用 让我的其他项目。我遇到这个错误新闻模块

public class News
{
    public string Title { get; set; }
    public string Text { get; set; }

    public IList<Comment> Comments { set; get; }
}

评论模块

public class Comment
{
    public string Title { get; set; }
    public string TextComment { get; set; }

    public News  New { set; get; }
}

如果您能帮助我更好地设计项目,我将不胜感激

4

2 回答 2

2

我在这里看到两个选项:

  1. 将共享代码移动到第三个库,以便 A 和 B 将引用它,但不能相互引用
  2. 将 A 和 B 合并到一个库中
于 2013-03-17T19:48:01.730 回答
0

您将两个实体链接在一起,正如我所见过的几乎所有实体框架教程中所推荐的那样。但是,我只会在小型项目中这样做,您可以将所有域模型放在一个程序集中。

如果您正在处理一个更大的项目,您需要根据子域将域模型分离到不同的程序集中,我不会将两个实体链接在一起。相反,我会问自己,是新闻对其评论数据负责,还是评论对新闻数据负责?

通过这种方式,您可以找到根实体,这取决于上下文可能是它们中的任何一个。例如,如果您决定新闻是根,那么新闻将包含评论,但评论应该只引用新闻 ID,因为它们不负责新闻数据。

于 2018-04-27T07:57:20.667 回答