1
創建或使用的EntityFramework 4.的EntityFramework當調用SaveChanges
我搜索在這裏更新行過程,並覆蓋SaveChanges方法我想自動更新「CREATEDATE」和「UpdateDate」 4校驗字段存在,效果很好。
public partial class MyEntities: DbContext
{
public override int SaveChanges()
{
var context = ((IObjectContextAdapter)this).ObjectContext;
context.DetectChanges();
var entries = context.ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Modified);
foreach (var entry in entries)
{
CurrentValueRecord entryValues = entry.CurrentValues;
if (entry.State == EntityState.Added)
{
if (entryValues.GetOrdinal("CreateDate") > 0)
entryValues.SetDateTime(entryValues.GetOrdinal("CreateDate"), DateTime.Now);
if (entryValues.GetOrdinal("UpdateDate") > 0)
entryValues.SetDateTime(entryValues.GetOrdinal("UpdateDate"), DateTime.Now);
}
if (entry.State == EntityState.Modified)
{
if (entryValues.GetOrdinal("UpdateDate") > 0)
entryValues.SetDateTime(entryValues.GetOrdinal("UpdateDate"), DateTime.Now);
}
}
return base.SaveChanges();
}
}
但是不是每個表都有UpdateDate,有的甚至沒有CREATEDATE場,
entryValues.GetOrdinal("UpdateDate")
我不知道如何來檢查條目有這些領域,也不要找不到任何
的Try ...
方法。
待辦事項你可以控制實體類,例如有些但現在都包含CreateDate和UpdateDate字段的類? –
使用反射來檢查屬性是否存在。就像'entry.GetType()。GetProperty(「UpdateDate」)!= null' – Nilesh
我無法控制。所以我需要的是當插入任何新行做數據庫,檢查實體是否有「CreateDate」,如果是的話,給它現在,如果沒有,然後忽略。 – Bubble