这个问题是关于我使用 DAL-BLL 架构为我的期末学校项目创建的 ASP.NET Web 服务。
我有一个存储过程,它是一个带有 2 个表的内部联接的选择查询。因此存储过程返回多表值。我的 DAL tableAdapter 方法之一访问此存储过程。如何检索 BLL 中的返回值?我是否必须创建一个类似于应该由存储过程返回的类结构?还是有直接的方法来实现相同的目标?非常感谢帮助。如果有人需要代码小程序以更好地理解,请告诉我。谢谢
以下是更多信息:我在 DAL 中使用 SQL 数据集 (.xsd)。所以我有一个名为“Insurance”的数据表,它有一个 tableAdapter。适配器中的一个查询引用了具有内部联接的存储过程。所以我的SP看起来像:
ALTER PROCEDURE dbo.GetInsurancesPaged
(
@startRowIndex int,
@maximumRows int,
@patientID int
)
AS
select * from
(
SELECT Insurance.insuranceID, Insurance.memberID, Insurance.groupID, Insurance.accountType, Insurance.comments, Insurance.patient, Insurance.company, InsuranceCompany.companyID, InsuranceCompany.companyName, InsuranceCompany.address, InsuranceCompany.phone, InsuranceCompany.fax, ROW_NUMBER() over (order by Insurance.dateModified DESC) as ROWRANK
FROM Insurance INNER JOIN InsuranceCompany ON Insurance.company = InsuranceCompany.companyID
WHERE Insurance.patient = @patientID
)
AS DataWithRowNumbers
WHERE ROWRANK > @startRowIndex AND ROWRANK <= (@startRowIndex + @maximumRows)
所以这个 SP 返回一个数据表,它将是内部连接中 2 个表的组合。如果我错了,请纠正我。
现在在我的 BLL 中,我有:
[System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Select, true)]
public mySys.InsuranceDataTable GetInsurancesPaged(int startRowIndex, int maximumRows, int patientID)
{
return insAdapter.GetInsurancesPaged(startRowIndex, maximumRows, patientID);
}
其中 insAdapter 是 insuranceTableAdapter 的一个实例
这会导致执行错误。我可以成功执行 SP,所以我认为问题只是我试图从 BLL 返回错误的数据表。请帮我解决这个问题。