从 Linq-to-SQL 中精确读取一行

发布于 2024-11-14 15:19:21 字数 428 浏览 2 评论 0原文

我想重构一些通过 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

莳間冲淡了誓言ζ 2024-11-21 15:19:21
return context.MyProcName(myParameter).Single().THeColumnINeed;
return context.MyProcName(myParameter).Single().THeColumnINeed;
山色无中 2024-11-21 15:19:21

试试这个:

return context.MyProcName(myParameter).First();

Try this:

return context.MyProcName(myParameter).First();

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文