[英]using interfaces/abstract classes with Entity Framework CodeFirst
我有一個Entity Framework CodeFirst Class(POCO):
class Contract : IMyContract
{
...
}
interface IMyContract
{
public int DateSigned{get;}
}
當客戶端修改合同時,為什么不能以這種方式截獲上下文更改操作:
void context_SavingChanges(object sender, EventArgs e)
{
foreach (ObjectStateEntry entry in
((ObjectContext)sender).ObjectStateManager.GetObjectStateEntries(
EntityState.Added | EntityState.Modified | EntityState.Deleted))
{
IMyContract myContract = entry.Entity as IMyContract;
if(myContract != null)
{
...
}
}
}
您提到了代碼優先,但同時您正在處理ObjectContext
事件並將發件人轉換為ObjectContext
試試這個:
public class MyContext : DbContext
{
private static EntityState[] states = new EntityState[]
{
EntityState.Added,
EntityState.Modified,
EntityState.Deleted,
};
...
public override int SaveChanges()
{
// If Entires<IMyContract> doesn't work use Entries() and check type
// inside the loop
foreach(var entry in ChangeTracker.Entries<IMyContract>()
.Where(e => states.Contains(e.State))
{
...
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.