次のようにレイヤーを分離しています。
UI - Web アプリ => BLL とエンティティの参照
BLL - ビジネス ロジック (検証) => 参照 DAL とエンティティ
エンティティ - データキャリー (POCO) => 参照なし
DAL - データ コンテキスト EDMX => 参照なし
これは完全な分離を使用した最初のプロジェクトであるため、非常に基本的な質問があります。オブジェクト @ UI レベルの EntityState (Added/Modified/Deleted) を設定したい場合、どうすればよいですか。上記の構造では、DataContextにアクセスできないためです。
エンティティの状態を設定することを知っている限り、データ コンテキストは必須です。
SOに関する多くの質問を読みましたが、この疑問を明確にするものはありませんでした。もう 1 つの方法は、カスタム State プロパティ @ Entities レベルを維持することです。
datacontext は DAL に制限する必要があることを読みました。EntityState を @BLL/UI に設定するのは悪い習慣ですか?
私はこの種のアーキテクチャで EF を初めて使用します。助けてください。
私は次のような質問をしましたが、明確になりませんでした。おそらく、SOC に関する知識が不足していることが原因である可能性があります。
1. DataContext を作成するレイヤーはどれですか?
2.サービス層で DbContext オブジェクトを参照してはいけないのはなぜですか?
3. Entity Framework / DbContext が DAL / リポジトリである場合、3 層アーキテクチャのどこに収まりますか?
4.Entity Frameworkとレイヤー分離
4. DbContext の外部で変更されたエンティティを更新する方法は?
編集 1: 私がまだ懸念していることの 1 つは、EntityState を設定するためだけに、DAL でオブジェクト階層を再度ループすることです。私はかなりネストされた階層を持っています。フラットな構造で同じことをしなければならない場合は、オブジェクトが埋められる UI で一度設定する必要があり、それから context.savechanges() を呼び出すことができます。
しかし、ここではエンティティのダミーの状態プロパティを作成しました。これを @UI に設定し、後でそれを EntityState.Modified @DAL に変換できます。これは正しいアプローチですか?