データベースのすべてのテーブルには、最後に 2 つの列があり、ログを記録できます (アクションを実行したユーザーとアクションの日付)。編集:コードファーストの移行を使用します。
したがって、これらの 2 つのログ列が自動的に入力されるようにしたいと思います。
テーブルに新しいエントリを挿入するたびに (DbContext.[Model].Add(entry) を使用)
または、DbContext.SaveChanges() アクションを実行するたびに
DbContext.SaveChanges() メソッドをオーバーライドすることを検討しましたが、うまくいきませんでした...
また、DbSet Add() メソッドをオーバーライドして、そこでログ入力アクションを実行しようとしました。そのために、 DbSet から継承する CustomDbSet クラスを作成しました。
public class CustomDbSet<TEntity> : DbSet<TEntity> where TEntity : class
{
public TEntity Add(TEntity entity)
{
//Do logging action here
return base.Add(entity);
}
}
しかし、これもうまくいきませんでした。
EDIT:このCustomDbSetで何が起こるかというと、DbContext.[Model]がnullを返すということです(データベーステーブルのコンテンツで満たされるので
はなく)ロギングが「自動」アクションになるように、どこに置くかを知っています..
public static void EntityLogCreate<T>(this T model, string userName) where T : LogColumns
{
model.Create_User = userName;
model.Create_Date = DateTime.Now;
}
それを達成するためのアイデアはありますか?