この質問は、最終的な学校のプロジェクトでDAL-BLLアーキテクチャを使用して作成しているASP.NETWebサービスに関するものです。
2つのテーブルの内部結合を使用したselectクエリであるストアドプロシージャがあります。したがって、ストアドプロシージャはマルチテーブル値を返します。私のDALtableAdapterメソッドの1つは、このストアドプロシージャにアクセスします。BLLで戻り値を取得するにはどうすればよいですか?ストアドプロシージャによって返されるはずのクラス構造と同様のクラス構造を作成する必要がありますか?または同じことを達成するための直接的な方法はありますか?よろしくお願いします。理解を深めるためにコードアプレットが必要な場合はお知らせください。ありがとう
詳細については、次のとおりです。DALでSQLデータセット(.xsd)を使用しています。だから私は「保険」と呼ばれるデータテーブルを持っています。これにはtableAdapterがあります。アダプタのクエリの1つは、内部結合を持つストアドプロシージャを参照しています。したがって、私の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を正常に実行できるので、問題はbczだけだと思います。BLLから間違ったデータテーブルを返そうとしています。これを解決するのを手伝ってください。