【问题标题】:LINQ to SQL - Mapping Stored Procedure with Multiple Results and using in webserviceLINQ to SQL - 使用多个结果映射存储过程并在 Web 服务中使用
【发布时间】:2013-12-21 03:54:53
【问题描述】:

在我当前的项目中,我正在利用 LINQ 从具有一个数据集的存储过程中提取结果。

但是,我希望做的是利用 LINQ 调用具有多个数据集的过程。因此,只需调用一次 SQL,我可以处理 3 个结果,而不是调用 3 个不同的过程来获取我的所有数据。

我偶然发现了这个http://www.codeproject.com/Tips/315667/LINQ-to-SQL-Mapping-Stored-Procedure-with-Multiple,但是,据我了解,这将根据我正在调用的数据集返回一个数据集。我的目标是减少数据库调用次数。

这是我目前的做法。不确定是否可以继续使用此模型来获得我正在寻找的结果,或者我是否必须以不同的方式使用 LINQ。

我目前使用 Visual Studio 2010。

我有一个链接到 SQL 数据库的 .dbml 文件。我将过程从服务器资源管理器拖放到 .dbml 文件中。在那之后,我不碰 .dmbl 文件。我让 .NET 处理这一切。

我有一个这样的网络服务,它将利用该过程返回该数据。

    //TEST: mutliple dataset return
    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public List<ps_UTY_TEST_MultipleDataSetResult> Return_multi_dataset()
    {
        InnoUtilityDataContext db = new InnoUtilityDataContext();
        List<ps_UTY_TEST_MultipleDataSetResult> d = new  List<ps_UTY_TEST_MultipleDataSetResult>();
        d = db.ps_UTY_TEST_MultipleDataSet().ToList();
        return d;
    }

这在返回单个数据集时效果很好,但我想从这样的过程中返回多个数据集。

ALTER PROC [dbo].[ps_UTY_TEST_MultipleDataSet]
AS
   SELECT uUsername 
   FROM Common.dbo.tbluser 
   WHERE uUserName = 'username1'

   SELECT uFname 
   FROM Common.dbo.tbluser 
   WHERE uUserName = 'username2'

这可能吗?

【问题讨论】:

    标签: c# sql sql-server linq stored-procedures


    【解决方案1】:

    以下网址会对您有所帮助...

    LINQ Stored Procedure return multiple dataset

    【讨论】:

    • 看起来很有希望。这会只产生一个 SQL 调用,返回两个数据集,然后让我使用它们,还是只返回我指定的数据集?
    • 我看到它只返回部分类中定义的数据集
    • @yoshi0423 执行您的 LINQ 存储过程后,您可以分别获得两个 select 语句结果..
    • @VishalPatel 感谢您的链接。之后,我能够得到我正在查看的结果。它实际上只执行一个我想要的 SQL 调用。谢谢!
    • 所附链接中的文档已过期。
    猜你喜欢
    • 2011-02-15
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    • 2011-03-07
    • 1970-01-01
    • 2010-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多