2017-07-09 19 views
0

私はプロジェクトで監査機能を実装するためにZ.EntityFramework.Plusパッケージを使用しています。 私はDBの最初のアプローチを以下のよ、私はhereを説明するように、2つの監査テーブルを作成したクエリを実行します。 .edmxファイルを更新することで、私はそれらの新しいDBsetsZ.EntityFramework.Plus.AuditExtensions.WebDBを最初に使用して監査履歴を取得しますか?

public virtual DbSet<AuditEntries> AuditEntries { get; set; } 
public virtual DbSet<AuditEntryProperties> AuditEntryProperties { get; set; } 

は今、私が監査を取得したいました

var auditlog = AuditExtensions.Where<TbAdditions>(oContext.AuditEntries, id).ToList(); 

が、コンパイラが、彼はそれがを必要とWhere定義のようにDBSet<AuditEntries>DBset<AuditEntry>をキャストすることはできませんことを、私に叫んさ:歴史、私はZ.EntityFramework.Plus名前空間のWhere拡張メソッドを使用します、DbSet<AuditEntries>ではなく、テーブルの名前を変更する必要がありますか?

+0

'そして、ここAuditEntries'は何?確かにそれは 'AuditEntry'でしょうか? – DavidG

+0

'AuditEntry'という名前のクラスがパッケージ自体に組み込まれています。作成した表とAuditEntriesの間で混乱しています。 –

+0

AuditEntryを使用し、自分で作成しないでください。 – DavidG

答えて

-1

免責事項:私はプロジェクトの所有者だEntity Framework Plus

あなたは現在、カスタムクラスAuditEntriesAuditEntryPropertiesとDBの最初のアプローチを使用しています。したがって、Z.EntityFramework.Plusライブラリが提供するクラスAuditEntryAuditEntryPropertyのコードファーストを使用していません。

拡張メソッドは、ライブラリによって提供されるクラスに対して行われているため、クラスと互換性がありません。

あなたはあなたの側にこのソースで見つかった同じ拡張メソッドを実装する必要があります:DbSet`AuditEntry.cs

は、おそらくより多くの拡張メソッドが必要になります。

監査機能は、この機能のように拡張性を高めるために、夏に完全に再コーディングされているはずです。

EDIT:回答サブ質問

どのようにそれを実装するには?ここで

それを実装する方法の例です:https://gist.github.com/mshwf/af017b50ceb2994d953762ef2b20386d

+0

'GetDbContext()'によって 'GetContext()'を意味しますか? 'GetKeyNames 'は、どのように実装するのですか?このようなものですか?https://romiller.com/2014/10/07/ef6-1-getting-key-properties-for-anentity/? –

関連する問題