Entity Frameworkを使用して監査証跡を作成する例をたくさん見てきましたが、私にとっては何かを見つけることはまだありません。 DB ContextのSaveChangesを単純にオーバーライドし、ChangeTracker ...問題を使用すると、IDを持たないエンティティを追加する(作成する)などの作業が必要になります。あなたはそれを保存し、それを保存すると、変更トラッカーに何が入っているかがわかるようになります。とにかく、私は監査証跡が働いていますが、それは地獄のように醜いです。私はこれを単純化し、エンティティを追加するたびに恐ろしい場合に追加する必要がないように助けを求めていました!すべてのヘルプが感謝しています。エンティティフレームワークを使用して監査証跡を作成する方が良い
public bool CreateRecord(object o)
{
Audit audit = new Audit()
{
ChangeTypeID = (int)Audit.ChangeType.CREATE,
TimeStamp = GetCurrentDateTime(),
RecordClass = o.GetType().ToString(),
NewValue = "",
ReasonForChange = "Record Creation"
};
if (o.GetType() == typeof(Permission))
{
Permission x = (Permission)o;
audit.OriginalValue = x.ToString();
Permissions.Add(x);
SaveChanges();
audit.RecordID = x.ID;
}
else if (o.GetType() == typeof(User))
{
User x = (User)o;
audit.OriginalValue = x.ToString();
Users.Add(x);
SaveChanges();
audit.RecordID = x.ID;
}
else if (o.GetType() == typeof(LogIn))
{
LogIn x = (LogIn)o;
audit.OriginalValue = x.ToString();
LogIns.Add(x);
SaveChanges();
audit.RecordID = x.ID;
}
else if (o.GetType() == typeof(Marker))
{
Marker x = (Marker)o;
audit.OriginalValue = x.ToString();
Markers.Add(x);
SaveChanges();
audit.RecordID = x.ID;
}
else if (o.GetType() == typeof(Method))
{
Method x = (Method)o;
audit.OriginalValue = x.ToString();
Methods.Add(x);
SaveChanges();
audit.RecordID = x.ID;
}
else if (o.GetType() == typeof(Sample))
{
Sample x = (Sample)o;
audit.OriginalValue = x.ToString();
Samples.Add(x);
SaveChanges();
audit.RecordID = x.ID;
}
else if (o.GetType() == typeof(Run))
{
Run x = (Run)o;
audit.OriginalValue = x.ToString();
Runs.Add(x);
SaveChanges();
audit.RecordID = x.ID;
}
else if (o.GetType() == typeof(XYDataSet))
{
XYDataSet x = (XYDataSet)o;
audit.OriginalValue = x.ToString();
XYDataSets.Add(x);
SaveChanges();
audit.RecordID = x.ID;
}
else
{
return false;
}
// Save audit record
audit.UserID = ((App)Application.Current).GetCurrentUserID();
Audits.Add(audit);
SaveChanges();
return true;
}
より汎用的なものについて、あなたは、その[EntityFramework拡張子]と[ 'Audit.NET'](https://github.com/thepirat000/Audit.NET#auditnet)試みることができる(https://でgithubの.com/thepirat000/Audit.NET/blob/master/src/Audit.EntityFramework/README.md#auditentityframework)。 – thepirat000