1

プロジェクトはモジュラー形式です。各モジュールは、別々のライバリーにあります。ただし、モジュール間で通信する必要がある場合もあります。例、EFで関係を作成します。しかし、私がうまくやれば、プロジェクトAからBへの参照を追加することは通常問題ではありません。しかし、BからAへのプロジェクト参照を追加したい場合、次のエラーが発生します。

への参照を追加できませんでした。このプロジェクトを参照として追加すると、循環依存が発生します

各モジュールはhコードのプロジェクトです。そして、各モジュールはプロジェクト内にあります。各モジュールには独自のドメインフィールドがあり、その属性が定義されています。(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

ここに 2 つのオプションがあります。

  1. 共有コードを 3 番目のライブラリに移動して、A と B がそれを参照するが相互に参照しないようにする
  2. A と B を 1 つのライブラリにマージする
于 2013-03-17T19:48:01.730 に答える
0

私が見たほとんどすべてのEntity Frameworkチュートリアルで推奨されているように、両方のエンティティをリンクしています。ただし、すべてのドメイン モデルを 1 つのアセンブリに配置できる小さなプロジェクトでのみ、この方法を使用します。

サブドメインに応じて異なるアセンブリにドメイン モデルを分離する必要がある、より大きなプロジェクトに取り組んでいる場合、私は両方のエンティティを一緒にリンクしません。代わりに、ニュースはコメントのデータに責任があるのか​​ 、それともコメントはニュースのデータに責任があるのか​​ と自問します。

このようにして、ルート エンティティを見つけることができます。ルート エンティティは、コンテキストに応じていずれかになります。たとえば、ニュースがルートであると判断した場合、ニュースにはコメントが含まれますが、コメントはニュース データに関与しないため、ニュース ID のみを参照する必要があります。

于 2018-04-27T07:57:20.667 に答える