DbContextに追加されたDbSet行を数える方法

entity-framework-core

質問

高低に見えましたが、[DbContext]。[DbSet Entity]の行数をカウントする構文は行の変更ステータスでは見つかりません。具体的には、1つのエンティティ/テーブル内のいくつの行が追加され、SaveChanges()が保留中であるかを知りたいと思います。

受け入れられた回答

DbContext.ChangeTracker.Entriesメソッドオーバーロードの1つを使用することができます( EF6に似ています )。

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

人気のある回答

(最初の答えは優しいので)私も同様の問題がありました。 1つのアプローチは、ここで提案されているように、コンテキストのSaveChangesメソッドをオーバーライドすることです。https : //www.exceptionnotfound.net/entity-change-tracking-using-dbcontext-inentity-framework-6/

しかし、状況によっては、コンテキストクラスの特別なメソッドが適切かもしれません:

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);
}


Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ