返回使用Repository模式的服务中按ID选择的单个实体
本文关键字:ID 选择 实体 单个 服务 Repository 模式 返回 | 更新日期: 2023-09-27 18:18:55
我在做ASP。NET mvc应用程序。我想在我的服务中创建一个方法,它只返回我从调用该方法的地方提供的具有id的实体。
在我的服务DocumentService
中,我写了以下简单的方法:
public Documents GetDocById(long id)
{
return DocumentsRepository.All().Where(d => d.Id == id);
}
因为我只想要一个实体,所以我决定将方法的返回类型设置为称为Documents
的实体的类型。这段代码得到的错误是:
Cannot implicitly convert type "System.Linq.IQueryable<DataAccess.Documents> to DataAccess.Documents.
这是合乎逻辑的。但是想想我该怎么做才能把它转换成我想要的类型,我发现自己遇到了问题。例如,我可以将方法的返回类型设置为List<Documents>
,然后在返回语句的末尾添加ToList()
。但我不期待一个List,我期待一个记录,而不是记录的列表。
那么是否有一种方法,如果有,我如何才能只返回一个实体,而不是只有一个项目的列表,这是我现在能想到的?
return DocumentsRepository.All().SingleOrDefault(d => d.Id == id);
或
return DocumentsRepository.All().FirstOrDefault(d => d.Id == id);
你需要这个
public Documents GetDocById(long id)
{
return DocumentsRepository.All().FirstOrDefault(d => d.Id == id);
}
使用FirstOrDefault
:
return DocumentsRepository.All().Where(d => d.Id == id).FirstOrDefault();
如果没有给定Id
的文档,则返回null
。