我目前使用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) {}
答案 0 :(得分:1)
DbSet.Local
包含已加载的实体。因此,当您创建Set
然后阅读Local.Count
时,它必须是0
,因为尚未加载任何内容。
在调试视图中,扩展结果时,数据从数据库加载,因此Local
现在也包含实体。
您可以加载Set
:
var entityData = db_entities.Set(EntityType);
entityData.Load();
现在您将看到Local.Count
显示数据库中的实际项目数。