2012-03-08 8 views
0

私は以下のようなコンテキストクラスを持っています。別のDbContextでDbContextを使用して、すべてのデータベース操作をすべてログに記録したいのですか?コンテキスト内のEntity Frameworkコンテキスト

public class MyContext : DbContext 
{ 
    public DbSet<SiteUser> SiteUsers { get; set; } 
    public DbSet<SystemLanguage> SystemLanguages { get; set; } 

    public int SaveChanges(string userId) 
    { 
     LogContext logDB = new LogContext(); 

     var entries = this.ChangeTracker.Entries() 
      .Where(p => p.State == EntityState.Added || 
       p.State == EntityState.Deleted || 
       p.State == EntityState.Modified); 

     foreach (var entry in entries) 
     { 
      foreach (AuditLog log in 
       GetAuditRecordsForChange(entry, userId)) 
      { 
       logDB.AuditLogs.Add(log); 
      } 
     } 

     logDB.SaveChanges(); 

     return base.SaveChanges(); 
    } 
} 

答えて

1

あなたは簡単にDbContextはカバーの下にやっていることである、別のデータベース(または同じデータベースにも、オープン複数の接続)への接続を作成することができますので、技術的には、これは、問題ではありません。