私の現在のプロジェクトでは、(私にとって) かなり変わった要求がありました。クライアントは、データベース テーブルからレコードを物理的に削除するのではなく、すべての削除手順でフラグをマークすることを望んでいます。一見するととても簡単に見えます。私はちょうど変更を持っています
public void DeleteRecord(Record record)
{
record.DeleteAndFlush();
}
public IList GetAllRecords()
{
Record.FindAll().ToList();
}
に
public void DeleteRecord(Record record)
{
record.Deleted = true;
record.UpdateAndFlush();
}
public IList GetAllRecords()
{
Record.FindAll().Where(x=>x.Deleted==false).ToList();
}
でも、少し時間ができたので、もう一度考えてみます。この小さな変更がカスケード設定に大きな問題を引き起こすことがわかりました。私は Active Record ビジネスにかなり慣れていないので。すべての CascaeEnum.Delete を CascadeEnum.SaveUpdate に単純に変更することはできません。だから、私はここでいくつかの入力を探しています。
1) マークは物理的な要件ではなく、一般的なフラグですか?
2) 質問 1 に対する答えが「はい」の場合、NHibernate にはこれを処理するための組み込み機能があると思います。この種の問題に対する正しいアプローチを教えてもらえますか?
ご意見ありがとうございます。