皆さん、こんにちは。
MVC サービス層の設計に関する多くの議論を調査して見つけましたが、正確な質問に対する答えは見つかりませんでした。サービス層の相互依存性に関する投稿には、私が考えていることを説明する画像がありますが、参照された投稿でカバーされているとは思えない追加の質問があります。
私のアプリケーションは、複数のコンテキストで人間とやり取りする非営利団体のデータを追跡します。その人間はクライアントだったのかもしれないし、アドバイザーだったのかもしれないし、敵だったのかもしれない。それらは複数にすることができます。クライアントは後で敵対者になる可能性があります (弁護士のクライアントを考えてみてください)。
私の考えでは、新しいクライアントまたは新しい敵対者を作成すると、常に 2 つのレコードが作成されます。1 つのレコードは person テーブルに、1 つのレコードは ancillary テーブルに作成されます。この背後にある私の考えは、ビジネスが特定の人物と過去にやり取りがあったかどうかを確認する場所 (人物テーブル) が 1 つあるということです。
私の質問は、エンティティをコントローラ レイヤと 1 対 0..1 の関係で表す場合、(1) クラスをビューに渡す前にクラスの結合と分割にコントローラを関与させる必要があるかどうかです。(2) そうでない場合、サービス層はビューモデルを構築する必要がありますか?
ここで1800 ライン コントローラに関する投稿を読みました。また、サービス レイヤーはビュー モデルについて認識すべきではないというこの投稿も読みました。これは、コントローラー レイヤーで生きて死ぬと考えさせられます。たとえば、サービス レイヤーがビューモデルに触れていない場合、 (3)とオブジェクトの両方をコントローラーに返すのは適切な設計ですか?workerService
Person
Worker
ここに私のエンティティクラスがあります:
public class Record
{
public DateTime datecreated { get; set; }
public DateTime dateupdated { get; set; }
public string Createdby { get; set; }
public string Updatedby { get; set; }
}
public class Person : Record
{
public int ID { get; set; }
public virtual Worker Worker { get; set; }
publiv virtual Defendant defendant {get; set;}
...
}
public class Worker : Record
{
public int ID { get; set; }
public virtual Person person { get; set; }
...
}
public class Defendant : Record
{
public int ID { get; set; }
public virtual Person person { get; set; }
...
}