簡體   English   中英

有沒有辦法檢測某個實體何時被添加到Entity Framework 6中的數據庫?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM