重複の可能性:
永続性無視の利点は何ですか?
エンティティ フレームワークを理解するためにしばらく時間といくつかの質問をした後、私は永続性を無視したオブジェクトのポイントが何であるかを理解していないという結論に達しました。
私が知る限り、永続性を認識するオブジェクトと永続性を無視するオブジェクトを使用することの実際的な違いは、次のようなものに慣れることです。
Person p = Person.Load(id);
p.Active = false;
p.Save();
もう 1 つは次のように使用されます。
using (var context = new MyContext())
{
Person p = context.Persons.Single(x => x.ID == id);
p.Active = false;
context.SaveChanges();
}
最初のケースでは、 を返して、後でp
呼び出すことができます。Save()
後者の場合、 を返すことはできますが、保存するp
には new に入れる必要があります。MyContext()
最初のケースでは、 Person が Load() と Save() を実際にデータベースロジックを処理するベースオブジェクトから継承すると仮定すると、永続性を変更したい場合は、そのベースオブジェクトを変更するだけです (またはIPersistent
インターフェースを持つだけです)。複数のストアにアクセスするために複数の基本クラスを実装できます)。後者ではMyContext
、永続化レイヤーが変更された場合にすべてのインスタンスを変更する必要があり、少しずつ行うのは非常に複雑です。
私の印象は、永続性を無視することは良いことです。理由がわかりません。セットアップ、操作、大規模な変更、断片的な変更ははるかに複雑に思えますが、その複雑さには何の利点もありません。重要な何かを見逃しているだけですか、それとも永続性を認識/無知であることの意味についての私の完全な理解に欠陥がありますか?