問題實體框架6 - GetObjectStateEntries預期修改實體有狀態「不變」
當我創建我的帳戶級爲例A,對象出現在我的SaveChanges狀態「EntityState.Modified」() - 方法如預期。
當我使用示例B時,該對象顯示爲「EntityState.Unchanged」,並且在GetObjectStateEntries(EntityState.Added | EntityState.Modified)調用的結果中沒有apear。
任何人都可以向我解釋爲什麼模型對象在示例B中顯示不變,而一切在示例A中工作?
三江源
類
我更新 '創造' 和我的語境對象 'LASTUPDATED' 使用這種方法:
public class CrmContext : DbContext
{
public override int SaveChanges()
{
DateTime now = DateTime.Now;
foreach (ObjectStateEntry entry in (this as IObjectContextAdapter).ObjectContext.ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Modified))
{
if (!entry.IsRelationship)
{
var account = entry.Entity as Account;
if (account != null)
{
account.LastUpdated = now;
if (entry.State == EntityState.Added)
{
account.Created = now;
}
}
}
}
return base.SaveChanges();
}
}
模型實施例A(工作):
public class Account
{
[Key]
public int AccountId { get; set; }
public string Name { get; set; }
[Timestamp]
public Byte[] TimeStamp { get; set; }
public DateTime Created { get; set; }
public DateTime LastUpdated { get; set; }
}
模型示例B(NOT WORKING):
public class Account : BaseObject
{
[Key]
public int AccountId { get; set; }
public string Name { get; set; }
}
public class BaseObject
{
[Timestamp]
public Byte[] TimeStamp { get; set; }
public DateTime Created { get; set; }
public DateTime LastUpdated { get; set; }
}
UPDATE:
的問題似乎並不有什麼做的模型類是否從基類繼承與否,我不能沒有使用複製的工作示例建議DetectChanges()調用。
固定它。 Thankyou非常花時間寫這篇文章。 :) –
太棒了。非常感謝。 –