Pergunta

Esta pergunta é sobre o ASP.NET webservice que estou criando com a DAL-BLL arquitetura para o meu último projecto de escola.

Eu tenho um procedimento armazenado, que é uma consulta select com uma associação interna para 2 tabelas.Portanto, o procedimento armazenado retorna multi-valor de tabela.Um dos meus DAL tableAdapter métodos de acessos este procedimento armazenado.Como faço para recuperar o valor de retorno no BLL?Tenho de criar uma estrutura de classe semelhante ao que deve ser retornado pelo procedimento armazenado?ou será que há uma maneira direta para obter o mesmo?Ajuda muito apreciada.Por favor, deixe-me saber se alguém precisa de código de aplicação para obter uma melhor compreensão.Obrigado

Aqui está mais algumas informações:Eu estou usando o SQL conjunto de dados.xsd) em DAL.Assim que eu tiver um datatable chamado "Seguro", que tem um tableAdapter.Uma das consultas no adaptador referência para um procedimento armazenado, que tem uma associação interna.Então, meus SP parece:

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)

Para isto SP retorna um datatable que será uma combinação das 2 tabelas no interior da associação.Por favor, corrija-me se estou errado.

Agora na minha BLL, eu tenho:

[System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Select, true)]
    public mySys.InsuranceDataTable GetInsurancesPaged(int startRowIndex, int maximumRows, int patientID)
    {
       return insAdapter.GetInsurancesPaged(startRowIndex, maximumRows, patientID);
    }

onde insAdapter é uma instância de insuranceTableAdapter

Isso dá um erro na execução.Eu posso executar o SP com êxito, então eu acho que o problema é só bcz eu estou tentando retornar um errado datatable a partir da BLL.Por favor, me ajudar a resolver isso.

Foi útil?

Solução 2

Encontrei uma solução :) Finalmente, tenho que trabalhar.

Eu criei um novo adaptador de tabela usando o Dataset designer, e chamou o SP como uma das consultas lá.O datatable assim criado, tem todos os campos (a partir de Seguros e InsuranceCompany) incluído.Agora, ASP.NET pode detectar que o tipo de retorno é o recém-criado datatable.Funciona como um encanto.

Se existe uma melhor maneira de resolver isso, por favor, comente.

Obrigado a todos pelo vosso tempo.

Outras dicas

Se utilizar o ADO .Net conjunto de dados.O assistente irá definitivamente criar uma tabela para o mesmo.agora, a partir do dataaccess camada, faça os seguintes passos

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. Pegar isso em sua INTERFACE do usuário página seguinte a criação de objeto de BLL e chamar o método.Aqui no BLL você também pode fazer várias operações baixou os códigos em você interface do usuário e mantê-lo limpo a partir de várias manipulações.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top