![](/img/trans.png)
[英]Table not added to database when adding a new migration using entity framework 7
[英]Is there a way to detect when a certain entity is added to the database in Entity Framework 6?
假設我有一個名為X的實體。只要在我的代碼的任何部分( db.Xs.Add(new_X_instance);
) db.Xs.Add(new_X_instance);
新的X
條目添加到數據庫中,我想使用實體框架執行特定的sql查詢。 我想知道這是否可行。 只是為了讓您知道,我無法使用SQL Server觸發器。
您可以在DbContext
類中重寫SaveChanges()
方法,在那里您可以獲得新添加的實體的列表。
public override int SaveChanges()
{
var AddedEntities = ChangeTracker.Entries<Entity>().Where(E => E.State == EntityState.Added).ToList();
AddedEntities.ForEach(E =>
{
// Do whatever you like !
});
return base.SaveChanges();
}
您可以使用ObjectContext
執行此操作,如下所示:
var octx = ((IObjectContextAdapter)ctx).ObjectContext; // ctx is regular DbContext here
octx.ObjectStateManager.ObjectStateManagerChanged += (sender, item) =>
{
if (item.Action == CollectionChangeAction.Add) {
// added
var target = item.Element; // this is added entity
}
};
在您執行Add
后,將立即調用此名稱。 請記住, 在將這些實體保存到數據庫之前執行任何sql通常都不是一個好主意。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.