簡體   English   中英

EF Code First:我在哪里可以找到SavingChanges事件?

[英]EF Code First: Where can I find the SavingChanges Event?

OK,這可能是一個新手的問題,但如何/我在哪里可以訂閱ObjectContext.SavingChanges事件在此提到的例子崗位

我的演示應用程序中只有兩個相關的類:“Country”類和一個包含EF Code First“定義”的類:

internal class TestDb : DbContext
{
    public DbSet<Country> Countries { get; set; }       
}

任何提示都受到高度贊賞。

你應該能夠做到這一點:

internal class TestDb : DbContext  
{  
    public void SetSavingChanges(EventHandler evt) 
    {
            var oc = this as IObjectContextAdapter;
            oc.ObjectContext.SavingChanges -= evt;
            oc.ObjectContext.SavingChanges += evt;
    }

    public DbSet<Country> Countries { get; set; }  
}  

從我在MSDN上看到的內容, DbContextObjectContext的實例包裝為外觀,而不是公開此特定事件。

但是, DbContext確實有一個帶有ObjectContext構造函數重載 - 您可以使用它來傳入ObjectContext並在其上訂閱SavingChanges事件。

using(ObjectContext context = new ObjectContext(myConnectionString))
{
  using(DbContext dbContext = new DbContext(context, true))
  {

  }
}

另一種方式可能是,例如:

Public Class MainForm

  Private WithEvents myObjectContext As ObjectContext
  Private myDbContext As DbContext

...

  Private Sub MainForm_Load(sender As Object, e As EventArgs) Handles Me.Load
    myDbContext = New DbContext
    myObjectContext = CType(myDbContext, IObjectContextAdapter).ObjectContext

...


  Private Sub ObjectContextSavingChanges(sender As Object, e As EventArgs) Handles myObjectContext.SavingChanges

    'Your code hear

  End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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