从 Linq-to-SQL 中精确读取一行
我想重构一些通过 Linq-to-SQL 从 SQL Server 2008 读取数据的 C# 模块。这些存储过程最多获取一行,因为我将完整的 PK 作为参数提交。显然 Linq-to-SQL 不知道最多可以返回一行。结果,运行以下代码来获取一个值或引发异常:
var results = context.MyProcName(myParameter);
foreach (var result in results)
{
return result.THeColumnINeed;
}
throw new Exception(string.Format("Value not found for parameter {0}", myParameter));
这段代码完成了工作,但看起来有点难看。我怎样才能做得更好?
I want to refactor some C# modules that read data from SQL Server 2008 via Linq-to-SQL. These stored procedures fetch at most one row, because I am submitting the full PK as parameters. Apparently Linq-to-SQL is not aware that at most one row can be returned. As a result, the following code runs to get one value or throw an exception:
var results = context.MyProcName(myParameter);
foreach (var result in results)
{
return result.THeColumnINeed;
}
throw new Exception(string.Format("Value not found for parameter {0}", myParameter));
This code get the job done, but it kinda looks ugly. How can I do it better?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
试试这个:
return context.MyProcName(myParameter).First();
Try this:
return context.MyProcName(myParameter).First();