私はパーティーに少し遅れていることを知っていますが、私が取り組んでいるプロジェクトのためにこれを解決したので、私の解決策を共有したいと思いました.
まず、ソリューションをより再利用できるようにするために、タイムスタンプ プロパティを持つ基本クラスを作成しました。
public class EntityBase{ public DateTime? CreatedDate { 取得;設定;パブリック日時? LastModifiedDate {get;設定; }}コード> プレ>
次に、DbContext の SaveChanges メソッドをオーバーライドしました:
public class MyContext :DbContext{ public override int SaveChanges() { ObjectContext context =((IObjectContextAdapter)this).ObjectContext; // EntityBase IEnumerable objectStateEntries =from e in context.ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Modified) where e.IsRelationship ==false &&e.Entity から継承する追加/変更されたすべてのエンティティを検索します。 =null &&typeof(EntityBase).IsAssignableFrom(e.Entity.GetType()) e を選択します。 var currentTime =DateTime.Now; foreach (objectStateEntries の var エントリ) { var entityBase =entry.Entity as EntityBase; if (entry.State ==EntityState.Added) { entityBase.CreatedDate =currentTime; } entityBase.LastModifiedDate =currentTime;戻り値 base.SaveChanges(); }}コード> プレ>