添加存储过程并从服务中调用它
Add stored proc and call it from a service
- 我创建了一个简单的存储过程,其中包含一些与客户 table 和其他相关 table 的连接,它接受两个参数。我可以在 SQL 中执行此 SP 并且可以工作。
- 我将这个 SP 拖放到我的 DBML 文件中并重新编译。
我添加以下代码以调用 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。我不知道所有细节,所以这只是为了展示如何转换,但整个方法可能需要重构。
- 我创建了一个简单的存储过程,其中包含一些与客户 table 和其他相关 table 的连接,它接受两个参数。我可以在 SQL 中执行此 SP 并且可以工作。
- 我将这个 SP 拖放到我的 DBML 文件中并重新编译。
我添加以下代码以调用 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。我不知道所有细节,所以这只是为了展示如何转换,但整个方法可能需要重构。