Cette question concerne le service Web ASP.NET que je crée en utilisant l'architecture DAL-BLL pour mon projet d'école finale.Comment retourner une valeur de jointure multi-table à partir de BLL
J'ai une procédure stockée, qui est une requête de sélection avec une jointure interne pour 2 tables. Par conséquent, la procédure stockée renvoie une valeur multi-table. Une de mes méthodes DAL tableAdapter accède à cette procédure stockée. Comment puis-je récupérer la valeur de retour dans la BLL? Dois-je créer une structure de classe similaire à celle supposée être retournée par le proc stocké? ou existe-t-il un moyen direct d'atteindre la même chose? Aide grandement appréciée. S'il vous plaît laissez-moi savoir si quelqu'un a besoin d'applet de code pour obtenir une meilleure compréhension. Merci
Voici quelques informations supplémentaires: J'utilise le jeu de données SQL (.xsd) dans DAL. J'ai donc un datatable appelé "Insurance", qui a un tableAdapter. Une des requêtes dans l'adaptateur fait référence à une procédure stockée, qui a une jointure interne. Donc, mon SP ressemble à:
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)
Donc ce SP retourne une datable qui sera une combinaison des 2 tables dans la jointure interne. S'il vous plait corrigez moi si je me trompe.
Maintenant, dans mon BLL, j'ai:
[System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Select, true)]
public mySys.InsuranceDataTable GetInsurancesPaged(int startRowIndex, int maximumRows, int patientID)
{
return insAdapter.GetInsurancesPaged(startRowIndex, maximumRows, patientID);
}
où insAdapter est une instance de insuranceTableAdapter
Cela donne une erreur lors de l'exécution. Je peux exécuter le SP avec succès, donc je pense que le problème est seulement bcz je suis en train de retourner une mauvaise date de la BLL. Aidez-moi à résoudre ce problème.
Oui - nous aurons besoin de code. Besoin de voir à quoi ressemble l'ensemble de résultats SQL et quelle technologie DAL vous utilisez (LINQ-SQL, ADO.NET classique, etc.) – RPM1984
Merci d'avoir jeté un coup d'œil. J'ai mis plus d'informations dans ma question. S'il vous plaît laissez-moi savoir comment le résoudre. – Batul