これはかなり細かい点であり、答えは「そもそもホットなアイデアではありません」であると予想しています。
モデルコード:
public partial class MyEntities : ObjectContext
{
// the idea is if the object is in a using block, this always gets called?
protected override void Dispose(bool disposing)
{
this.SaveChanges();
base.Dispose(disposing);
}
}
クライアントコード:
using(var model = new MyEntities())
{
// do something
// no worry about calling model.SaveChanges()
}
私が確信していない問題は次のとおりです。
何らかの理由で「ファイナライズ」を考えていたので、これを行うのに適切な場所は Dispose です - 私はいつも C# の破棄について混乱します。
クライアント コードで例外がスローされた場合、通常は SaveChanges はスキップされますが、それで問題ありません。空のキャッチで try を使用する必要がありますか?
public partial class MyEntities : ObjectContext { protected override void Dispose(bool disposing) { try { this.SaveChanges(); } catch {} base.Dispose(disposing); } }