【发布时间】:2010-01-13 22:42:57
【问题描述】:
当需要一个记录集(>=1 条记录)时,您如何检查该 0 条记录的情况?
例如:
RivWorks.Model.FeedStoreReadOnly store = new RivWorks.Model.FeedStoreReadOnly(AppSettings.FeedAutosEntities_connString, AppSettings.FeedAutosEntities_metadata, AppSettings.FeedAutosEntities_providerName);
RivWorks.Model.NegotiationAutos.Entities _dbFeed = store.ReadOnlyEntities();
var companyDetails = from a in _dbFeed.ClientClientMap where a.CompanyID == CompanyId select a;
return companyDetails.ToList();
当它返回时,它在 ToList() 上出错,因为没有满足 WHERE 子句的记录。那么,检查 0 条记录的正确方法是什么?此时推荐的回报是多少?
根据以下答案添加:
if (companyDetails.Count() > 0)
return companyDetails.ToList();
else
{
List<RivWorks.Model.NegotiationAutos.ClientClientMap> ret = new List<RivWorks.Model.NegotiationAutos.ClientClientMap>();
ret.Add(companyDetails.FirstOrDefault());
return ret;
}
尚未测试,但(逻辑上)似乎可行。想知道是否有更简单的方法。
注意:
我明白了。运行 SQL 的帐户没有被 DBA 授予正确的权限集。我们更改了新表/视图上的所有 GRANT 语句,它现在可以工作了。
我仍然不确定正确答案是什么。我倾向于创建一个空白(新)记录并添加到列表中,以便我们接收列表的人可以显示一些内容(如果没有其他内容,请进行编辑)...
【问题讨论】:
-
您确定是例外吗?它不应该出错,它应该返回一个包含 0 条记录的列表。
-
你遇到了什么异常?
-
在内部异常中,我得到“无效的对象名称'dbo.ClientClientMap'”。我不理解这个错误,因为我可以在我的模型中看到该对象并且可以很好地引用它。
-
我认为你应该删除
ret.Add()调用,它会在你的列表中添加一个null。您只需要 else-branch 中的空列表。 -
删除与否无关紧要。每当我访问 companyDetails 时都会引发异常。即:companyDetails.Count()、companyDetails.ToList() 等...
标签: c# .net entity-framework