如何计算在DbContext中添加的DbSet行

时间:2016-10-05 16:41:53

标签: entity-framework-core

查看高低,但找不到用于计算[DbContext]。[DbSet Entity]中行数的行的语法。具体来说,我想知道一个实体/表中有多少行被添加并且正在等待SaveChanges()。

2 个答案:

答案 0 :(得分:1)

您可以使用其中一个DbContext.ChangeTracker.Entries方法重载(类似于EF6):

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

答案 1 :(得分:1)

(第一个答案,所以要温柔) 我遇到了类似的问题。一种方法是覆盖此处建议的上下文SaveChanges方法:https://www.exceptionnotfound.net/entity-change-tracking-using-dbcontext-in-entity-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);
}