在我的 WCF 休息服务的网络方法中,我试图使用 Linq 的第一种方法查找记录,如下所示
[WebInvoke(UriTemplate = "UpdateProductObject", Method = "PUT")]
public Result UpdateProductObject(ProductObjectToSave prodSave)
{
IUnitOfWork unitOfWork = new UnitOfWork((IObjectContext)_objectSetFactory);
var versions = prodSave.VersionDetails;
foreach (var versionDetail in versions)
{
var detail = versionDetail;
var dbVersionentity = _productVersionEntityRepository.First(x => x.Id == detail.Id);
if (detail.Id < 0)
{
dbVersionentity.Id = GetNextTableId("vProductVersion");
}
dbVersionentity.Name = detail.Name;
dbVersionentity.Code = detail.Name;
if (detail.Id > 0){
_productVersionEntityRepository.Update(dbVersionentity);
}
else
{
_productVersionEntityRepository.Insert(dbVersionentity);
}
}
try
{
unitOfWork.Commit();
}
catch (Exception e)
{
return new Result() { Error = e.Message };
}
return new Result() { Error = "Record updated successfully" };
}
“_productVersionEntityRepository”在我的服务中定义如下。
private readonly Repository<ProductVersionEntity> _productVersionEntityRepository;
当没有记录时,它会抛出异常 "Sequence contains no elements" 。我做了一些发现,我们可以使用 FirstOrDefault 方法。但不知何故,我没有得到使用 FirstOrDefault 的选项。我对此真的很陌生,所以可能我错过了一些可以描述解决方案的链接。如果第一种方法失败,请帮助我或建议我以其他方式进行错误处理