通用设置可能的bug?

时间:2016-06-03 05:04:24

标签: c# entity-framework

我目前使用X类型的通用集合,其中类型是生成抛出EF的实体之一。要获取我的通用集来获取数据,我这样做

var entityData = db_entities.Set(EntityType);

现在我正在运行一个简单的检查,计算集合中有多少元素,如果它等于0(例如),它将执行某些操作(抛出异常,重定向等等)。问题是,当我计算列表中有多少元素时,如下所示(使用下面的代码)

if (entityData.Local.Count == 0) { }

当我调试以查看确切发生的事情Local当我展开results view时它没有任何值,它显示11个数据(例如)和我看到Local刷新并显示数据。我想知道是做错了还是做错了。

修改
我改变了逻辑,因为它没有使用它,希望得到答案或其他方式

var countItems = 0; 

        foreach (var item in entityData)
        {
            //this was added due to a bug when counting the dbSet items
            //will exist after looping first item
            countItems++;
            break;
        }

        if (countItems == 0) {}

1 个答案:

答案 0 :(得分:1)

DbSet.Local包含已加载的实体。因此,当您创建Set然后阅读Local.Count时,它必须是0,因为尚未加载任何内容。

在调试视图中,扩展结果时,数据从数据库加载,因此Local现在也包含实体。

您可以加载Set

var entityData = db_entities.Set(EntityType);
entityData.Load();

现在您将看到Local.Count显示数据库中的实际项目数。