問題
Web アプリケーションに UnitOfWork とリポジトリ スタイルのデータ アクセス レイヤーを実装しています。作成したカスタム テーブルを使用して、データベースへの変更を監査したいと考えています。この問題は、新しいアイテムがコンテキストに追加されたときに発生します。アイテムはコンテキストに追加されますが、SaveChanges()
メソッドが呼び出されていないため、エンティティはまだAdded
状態にあります。これは、主キーが割り当てられていないことを意味します。つまり、監査レコードを作成できずSaveChanges()
、リポジトリからの呼び出しはリポジトリのコーディング スタイルに違反することになります。追加された状態のエンティティの主キーを取得する方法はありますか?
試みられた解決策
私が考えることができる唯一の解決策は、クライアントがそれらを生成できるように、ランダムな GUID を使用することです。ID フィールドとしてランダムな GUID を使用するとコストがかかる可能性があると聞いたので、少し躊躇しています。
コード
//Method in my repository class
public void Insert(T entity)
{
//Adds the entity the context
dbSet.Add(entity);
Audit audit= new Audit
{
Created = DateTime.Now,
PrimaryKey = entity.Key, //This is not set because the State of the entity is still Added
};
Context.Audits.Add(audit);
}