Question

Cette question concerne le site Web ASP.NET que je crée à l'aide de l'architecture DAL-BLL pour mon projet d'école final.

J'ai une procédure stockée, qui est une requête sélectionnée avec une jointure interne pour 2 tables. Par conséquent, la procédure stockée renvoie la valeur multi-table. Une de mes méthodes DAL TableAdapter accède à cette procédure stockée. Comment récupérer la valeur de retour dans la BLL? Dois-je créer une structure de classe similaire à celle supposée être renvoyée par le procédé stocké? Ou y a-t-il une mauvaise façon d'atteindre la même chose? Aider grandement apprécié. S'il vous plaît laissez-moi savoir si quelqu'un a besoin d'applet de code pour mieux comprendre. Merci

Voici quelques informations supplémentaires: J'utilise le jeu de données SQL (.xsd) à DAL. Donc, j'ai un jeu de données appelé "assurance", qui a un tableaux de table. Une des requêtes dans les références de l'adaptateur à une procédure stockée, qui a une jointure intérieure. 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)

Ce SP renvoie un jeu de données qui sera une combinaison des 2 tables de la jointure interne. S'il vous plaît 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ù l'insalète est une instance d'insuranceTableadapter

Ceci donne une erreur sur l'exécution. Je peux exécuter le SP avec succès, alors je pense que le problème est que BCZ, j'essaie de retourner un mauvais type de la BLL. S'il vous plaît aidez-moi à résoudre ceci.

Était-ce utile?

La solution 2

trouvé une solution :) Enfin, ça marche.

J'ai créé un nouvel adaptateur de table à l'aide du concepteur de jeu de données et appelé SP comme l'une des questions.Le jeu de données ainsi créé a tous les champs (d'une assurance et d'une assurance-assurance) inclus.ASP.NET peut détecter que le type de retour est le fichier de données nouvellement créé. Fonctionne comme un charme.

S'il y a un meilleur moyen de résoudre ce problème, veuillez commenter.

Merci à tous pour votre temps.

Autres conseils

Si vous utilisez ADO .NET DataSet.L'assistant créera définitivement une table pour la même chose.Maintenant, à partir de la couche DataAccess, procédez comme suit

1. Create a object of dataset. (DLL)

Private YourCustomeDataSetDatatable  DataAccess()
{
 YourCustomDataSet ds = new YourCustomDataSet();  // also called strongly typed dataset
YourCustomeDataSetDatatable dt = ds.YourCustomeDataSetDatatable ()
YourCustomeDataSetTableAdapter ta = new ds.YourCustomeDataSetTableAdapter (); // table adapter that will be invoked 
ta.Fill(dt); // or if you have set to return only you can also use GetData()
}

2. Now in business layer

Private YourCustomeDataSetDatatable  DataAccess()
{
// create a object of DLL. 
MyDAL myDal = new MyDAL ();
return myDal.DataAccess();
}

  1. attrapez cela sur votre page d'interface utilisateur en suivant l'objet Création de l'ALL et appelez la méthode.Ici en BLL, vous pouvez également faire diverses opérations pour réduire les codes de votre UI et le garder propre à partir de diverses manipulations.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top