添加存储过程并从服务中调用它

Add stored proc and call it from a service

  1. 我创建了一个简单的存储过程,其中包含一些与客户 table 和其他相关 table 的连接,它接受两个参数。我可以在 SQL 中执行此 SP 并且可以工作。
  2. 我将这个 SP 拖放到我的 DBML 文件中并重新编译。
  3. 我添加以下代码以调用 SP 并 return 它在列表中

    public IQueryable<Entities.Customer> AllCustomerRanges(int CId, int ItemID)
    {
        List<Entities.Customer> c = myDataContext.spCustomerRanges(CId, ItemID).ToList();
    
    }
    

这给了我错误:

无法将类型 'System.Collections.Generic.List< spCustomerRangesResult>' 隐式转换为 'System.Collections.Generic.List< Entities.Customer>'

现在我没有 class spCustomerRangesResult,但经过一些研究后,我很困惑,如果我做错了什么,或者我是否需要实现一个 class 具有客户 class 有(听起来有点啰嗦)或者我刚刚犯了一个错误。

知道如何调用在列表中显示数据的 SP 吗?

new class spCustomerRangesResult 根据sp 结果自动生成,你应该把它转换成Entities.Customer 像这样:

      public IQueryable<Entities.Customer> AllCustomerRanges(int CId, int ItemID)
        {
            var c = myDataContext.spCustomerRanges(CId, ItemID).ToList();

            if (c == null)
                return null;

            var customers = c.Select(a => new Entities.Customer
            {
                FirstName=a.spResultFirstName,
                LastName = a.spResultLastName
                //this just example conversion, change it as needed. 
            });


            return customers;

        }

请注意,我 return IQueryable 即使您在使用 ToList() 时采用的方法,但可能不需要 returning IQuerybale。我不知道所有细节,所以这只是为了展示如何转换,但整个方法可能需要重构。