2016-10-05 14 views
0

高位と低位に見えますが、行の変更ステータスによって[DbContext]。[DbSet Entity]の行数をカウントする構文が見つかりません。具体的には、1つのエンティティ/テーブル内のいくつの行が追加され、SaveChanges()が保留中であるかを知りたいと思います。私は同様の問題があった (そう穏やかな、最初の答え)DbContextに追加されたDbSet行をカウントする方法

var addedCount = db.ChangeTracker.Entries<YourEntity>() 
    .Count(e => e.State == EntityState.Added); 

答えて

1

あなたは(EF6に類似)DbContext.ChangeTracker.Entriesメソッドのオーバーロードのいずれかを使用することができます。 https://www.exceptionnotfound.net/entity-change-tracking-using-dbcontext-in-entity-framework-6/

しかし、あなたのような状況であなたのコンテキストクラス上の特別な方法がより適切であるかもしれない:一つのアプローチは、ここで提案されたコンテキストSaveChangesメソッドをオーバーライドすることで働いていた

public virtual Tuple<int, int> CountChanges() 
{ 
    var modified = ChangeTracker.Entries().Where(x => x.State == EntityState.Modified).Count(); 
    var added = ChangeTracker.Entries().Where(x => x.State == EntityState.Added).Count(); 
    return new Tuple<int, int>(modified, added); 
} 
+0

おかげで、。私はEF Coreの包括的なドキュメントを見つけるのが難しく、EF6との重要な区別があるという警告があるので、EF6のドキュメントを参照することを躊躇しています。 – KarlRKaiser

+0

ええ、クラスのドキュメントは全くありませんので、私たちが持っているのはIntellisenseです:(そして、ここでは、少なくとも特定の部分が同じであるため、EF6ドキュメントへのインクルードを含めることができる数少ない場所の1つです。 –

1

関連する問題