这个问题关于我使用DAL-BLL体系结构为我的最终学校项目创建的ASP.NET webservice。如何返回来自BLL的多表连接值
我有一个存储过程,这是一个选择查询与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返回一个数据表,这将是内部联接中的两个表的组合。如果我错了,请纠正我。
现在在我的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,所以我认为问题只是BCL我想从BLL返回一个错误的数据表。 请帮我解决这个问题。
是的 - 我们需要一些代码。需要查看SQL Result Set的外观,以及您正在使用的DAL技术(LINQ-SQL,经典的ADO.NET等) – RPM1984 2010-07-26 03:48:04
感谢您看看它。我在我的问题中提供了更多信息。请让我知道如何解决它。 – Batul 2010-07-26 20:22:00