Partilhar via


Exemplo de Início Rápido de EntityDataSource

O exemplo neste tópico demonstra o uso do ADO.NET EntityDataSource controle para implementar um cenário de vinculação de dados. O aplicativo de exemplo exibe SalesOrderDetail itens associados a um SalesOrderHeader identificado pela chave de identidade do SalesOrderHeader. O modelo de dados usado no aplicativo baseia-se no banco de dados de exemplo AdventureWorks que acompanha o SQL servidor 2005.

A exibição na tela seguinte mostra a ferramenta em uso.A lista caixa no lado esquerdo da página contém as chaves de identidade de SalesOrderHeader itens. Na exibição, SalesOrderHeader número 43666 foi clicado. O associado SalesOrderDetail os itens são exibidos pela Gridview controle à direita.

Como implementar o exemplo

O exemplo é implementado nos seguintes estágios:

  • Crie um aplicativo Web Web do ASP.NET.

  • Adicione um modelo de dados de entidade ADO.NET baseado no banco de dados do AdventureWorks.

  • Adicionar um lista caixa para exibir SalesOrderHeader chaves.

  • Adicionar um GridView controle para exibir associado SalesOrderDetail itens.

  • Adicionar e configurar dois EntityDataSource controles para fornecer dados para o lista caixa e GridView controles.

  • Adicione um manipulador para o evento lista caixa índice selecionado alterado.

Criar aplicativo Web Web ASP.NET

  1. From a Arquivo menu no Visual Studio, criar um aplicativo ASP.NET.nome GetOrders EDSC o projeto.A marca de página padrão.aspx-up é aberta mostrando vazio HTML form e div sintaxe.

  2. Dê um título entre as Rótulos de marcação de título de página.

Adicionar um modelo de dados de entidade ADO.NET

Os dados que serão usados por este aplicativo são uma implementação de EDM (modelo de dados de entidade) com base nas tabelas em uma amostra AdventureWorks que acompanha o SQL servidor 2005.

Cinco entidades são declaradas:

  • Endereço

  • Contact

  • Produto

  • SalesOrderDetail

  • SalesOrderHeader

Instâncias desses tipos logicamente estão contidas por conjuntos de entidade de mesmo nome no modelo de objeto criado a partir de esquema conceitual.

Três associações e conjuntos de associação são declarados.Os nomes das seguintes associações todos os começam com FK_.Isso reflete relações de chave estrangeira nas tabelas de dados AdventureWorks.

  • FK_SalesOrderDetail_SalesOrderHeader_SalesOrderID

  • FK_SalesOrderHeader_Address_ShipToAddressID

  • FK_SalesOrderHeader_Contact_ContactID

Para criar o modelo de Sales de AdventureWorks:

  1. O projeto GetOrders EDSC no 1.Right clicarO gerenciador de soluções.

  2. clicar Adicionar/Novo item.

  3. selecionar ADO.NET Entity Data Model e nomeie o novo modelo de dados AdvWksSales.edmx.

  4. Quando o Assistente de modelo de dados de entidade for exibida, selecionar Gerar a partir de banco de dados e clicar Próximo.

  5. Criar uma conexão com o banco de dados AdventureWorks e clicar Próximo.

  6. Quando o escolher os objetos de banco de dados caixa de diálogo for exibida, selecionar Address, Contact, Product, SalesOrderDetail, e SalesOrderHeading. Clique em Finish.

  7. O designer AdvWksSales.edmx abre e exibe as entidades e associações do modelo de dados.Observe a associação um-para-muitos entre o SalesOrderHeader entidade e o SalesOrderDetail entidade. Esses tipos de dados de dois e a associação entre eles serão usados no aplicativo de exemplo.Construa o projeto para criar o modelo de dados.

Adicionar controles para exibir dados

Dois dados controles são necessários para exibir o SalesOrderHeader chaves e associados SalesOrderDetail itens.

Para adicionar controles de vídeo à página:

  1. Abra o modo de exibição de Design de padrão.aspx no Visual Studio e arrastar o div fronteira para baixo, para que haja espaço suficiente para adicionar controles à página.

  2. Adicione um rótulo de texto: Select SalesOrderHeaderID.

  3. Abaixo do rótulo adicionar um lista caixa.O padrão de ID, ListBox1, pode ser usado. conjunto o dimensionar e a posição de caixa de listagem de acordo com a página marca-up na parte inferior desta página.

  4. Adicionar um GridView o controle para a página e defina a posição de acordo com a marca de página-up na parte inferior deste tópico. O padrão ID GridView1 pode ser usado.

  5. Adicionar um rótulo acima de GridView controle com texto: SalesOrderHeader ID.

  6. Adicionar outro rótulo acima de GridView. Este rótulo será usado em um parâmetro de um CommandText. Atribua a ele uma ID que reflete sua finalidade, sistema autônomo: labelHeaderIDFromList.conjunto o texto deste rótulo como uma seqüência de caracteres vazia.

Adicionar e configurar controles EntityDataSource

Para adicionar o EntityDataSource controles:

  1. Adicionar um EntityDataSource controle para a página. Nomeie esta EntityDataSource controle EntDataSrc_OrderID. Esse controle será limite para ListBox1 Para exibir SalesOrderHeader chaves.

  2. Adicionar outro EntityDataSource controle para a página. Nomeie esta EntityDataSource controle EntDataSrc_OrderDetails. Esse controle será limite à Gridview1 Para exibir SalesOrderDetail entidades associadas a SalesOrderHeader chave de identidade selecionado pelo usuário em ListBox1.

Observação:

I não foi criado o projeto f desde adicionando a entidade Dados Modelo (EDM) Para AdvWksSalesModel, construir o projeto agora ou sistema autônomo etapas a seguir não funcionarão conforme descrito. Criar projeto EDM coloca os artefatos de metadados do EDM no local designado pelo cadeia de conexão no arquivo WebConfig.

Para configurar a vinculação de dados de ListBox1 para EntDataSrc_OrderID:

  1. clicar no > símbolo no EntityDataSource controle.

  2. Clique em Configurar Fonte de Dados.

  3. When the Configure Object Context dialog box appears, select Named ConnectionAdventureWorksEntities from the drop-down list.Isso identifica uma seqüência de caracteres de conexão do arquivo WebConfig.

  4. From a DefaultContainerName na lista suspensa, selecionar AdventureWorksEntities. Este é o nome do EntityContainer usada pelo modelo de dados no seu esquema de design. Clique em Next.

  5. Quando o Configurar seleção de dados caixa de diálogo for exibida, selecionar SalesOrderHeader do EntitySetName na lista suspensa.Este tipo não é parte de uma hierarquia de herança, portanto, a EntityTypeFilter pode ser deixado em branco.

  6. From a Selecionar demonstrativo Verifique se caixas de seleção SalesOrderID.Clique em Finish.

  7. clicar no > símbolo em ListBox1e selecionar escolher a fonte de dados.

  8. Quando o escolher uma fonte de dados caixa de diálogo for exibida, escolher EntDataSrc_OrderID do Selecionar uma fonte de dados na lista suspensa.selecionar SalesOrderID na próxima dois suspensa listas.

  9. Clique em OK.

Neste preparar, ele será instrutivo para executar o aplicativo.O lista caixa exibirá todas as chaves de identidade de SalesOrderHeader entidades na fonte de dados. Essas informações serão úteis quando o resto do aplicativo é implementado e o usuário pode selecionar uma tecla e exibir todos os SalesOrderDetail entidades associadas a SalesOrderHeader em Gridview1 no lado direito da página.

Configurar EntityDataSource com o controle GridView

Para BIND os pedidos associados a Gridview1:

  1. selecionar o EntityDataSource controle de chamada EntDataSrc_OrderDetails na área de design da página padrão.aspx.

  2. clicar no > símbolo no EntityDataSource controle.

  3. Clique em Configurar Fonte de Dados.

  4. When the Configure Object Context dialog box appears, select Named ConnectionAdventureWorksEntities from the drop-down list.

  5. From a DefaultContainerName na lista suspensa, selecionar AdventureWorksEntities.

  6. Clique em Next.

  7. Quando o Configurar seleção de dados caixa de diálogo for exibida, selecionar SalesOrderDetail from the EntitySetName na lista suspensa.Este tipo não é parte de uma hierarquia de herança, portanto, a EntityTypeFilter pode ser deixado em branco.

  8. From a Selecionar demonstrativo Verifique se caixas de seleção SalesOrderDetailID, OrderQty, ProductID, UnitPrice, e ModifiedDate.

  9. Clique em Finish.

  10. clicar com o botão direito do mouse o EntityDataSource controle e selecionar Propriedades.

  11. From a Propriedades selecionar de lista de Onde e clicar reticências à direita da caixa de texto.

  12. Quando o Editor de expressões caixa de diálogo for exibida, digite o seguinte texto para o Onde expressão área de texto: it.[SalesOrderID] = @parSalesOrderID.

  13. clicar no Adicionar parâmetro botão sob o Parâmetros lista box.Dar o nome de novo parâmetroparSalesOrderID. Este parâmetro será obtido do texto de um rótulo é definido quando o usuário seleciona uma chave de identidade no SalesOrderHeader lista caixa. É especificada no Parâmetro fonte na lista suspensa.

  14. selecionar Controle.

  15. From a ControlID na lista suspensa, selecionar labelHeaderIDFromList.

  16. Clique em OK.

Manipulador de eventos da alterar de índice selecionado caixa de listagem

O último preparar nesta implementação é conectar-se a seleção do usuário de uma chave de identidade para um SalesOrderHeader a uma consulta que retorna propriedades de todos os SalesOrderDetail entidades associadas selecionado SalesOrderHeader.

Você configurou a consulta para retornar as propriedades: SalesOrderDetailID, OrderQty, ProductID, UnitPrice, e ModifiedDate. The EntityDataSource controle está configurado para obter um parâmetro de controle labelHeaderIDFromList na Web da página e para fornecer um Where cláusula da consulta que identifica o SalesOrderHeader associado SalesOrderDetail entidades cujas propriedades serão exibidas. Agora você precisa adicionar código que define a propriedade Texto do controle labelHeaderIDFromList para a chave de identidade de um SalesOrderHeader selecionadas pelo usuário.

Para criar um manipulador de eventos para o SelectedIndexChanged evento do ListBox1:

  1. selecionar ListBox1 na área de design de página da Web.

  2. clicar com o botão direito do mouse em ListBox1e selecionar Propriedades.

  3. No Propriedades lista, clicar na opção de eventos.

  4. clicar duas vezes o SelectedIndexChanged evento.Isso abre a página de code-behind do ASP.NET, padrão.aspx.cs ou padrão.aspx.vb e mostra o bloco de código para o evento manipulador.

  5. Crie o manipulador de eventos mostrado o bloco de código que segue a etapa 6.O código no manipulador de define o valor de labelHeaderIDFromList o valor selecionado pelo usuário em ListBox1. Ele atribui o DataSource propriedade de GridView1 para EntDataSrcOrder. Por fim, ele chama o DataBind método em EntDataSrc_OrderDetails. O controle tiver sido configurado para consultar os dados com base em uma chave de identidade de labelHeaderIDFromList.

  6. conjunto o AutoPostBack propriedade de ListBox1 para true, para que o servidor possa ler a seleção assim que for feita.

protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    labelHeaderIDFromList.Text = ListBox1.SelectedValue;
    GridView1.DataSource = EntDataSrc_OrderDetails;
    GridView1.DataBind();
}

Quando o SelectedIndexChanged evento é acionado, a consulta predefinido com o com parâmetros Where cláusula é executado. As propriedades exibidas no GridView1 são aqueles do SalesOrderDetail entidades associadas a SalesOrderHeader selecionado no ListBox1.

Mark página-up de todos os controles

A seguinte marca de página-up contém todos os controles e propriedades que foram inicializadas no aplicativo que exibe SalesOrderDetail entidades associadas com um SalesOrderHeader que você tenha sido criando. The Where cláusula inclui um parâmetro que contém a chave estrangeira das SalesOrderHeader associado SalesOrderDetail entidades.

<body>
    <form id="form1" >
    <div style="height: 450px">
    
        <br />
        <asp:ListBox ID="ListBox1"  
            Height="275px" 
            Width="100px" 
            style="position:absolute; left:50px; top:80px"
            DataSourceID="EntDataSrc_OrderID" DataTextField="SalesOrderID" 
            DataValueField="SalesOrderID" AutoPostBack="True" 
            onselectedindexchanged="ListBox1_SelectedIndexChanged" >
        </asp:ListBox>
    
        <asp:GridView ID="GridView1" 
        style="position:absolute; left:200px; top:75px">
        </asp:GridView>
    
        <asp:Label ID="Label1"  
               Text="Select SalesOrderHeaderID"></asp:Label>
&nbsp;&nbsp;&nbsp;&nbsp;
        <asp:Label ID="Label2"  Text="SalesOrderHeaderID:"></asp:Label>
&nbsp;<asp:Label ID="labelHeaderIDFromList" ></asp:Label>
    
    </div>
    <asp:EntityDataSource ID="EntDataSrc_OrderID"  
        ConnectionString="name=AdventureWorksEntities" 
        DefaultContainerName="AdventureWorksEntities"
               EntitySetName="SalesOrderHeader">
    </asp:EntityDataSource>
    <asp:EntityDataSource ID="EntDataSrc_OrderDetails"  
        ConnectionString="name=AdventureWorksEntities" 
        DefaultContainerName="AdventureWorksEntities" 
        EntitySetName="SalesOrderDetail" 
        Select="it.[SalesOrderDetailID], it.[OrderQty],
             it.[ProductID], it.[UnitPrice], it.[ModifiedDate]" 
        Where="it.[SalesOrderID] = @parSalesOrderID">
        <WhereParameters>
            <asp:ControlParameter Name="parSalesOrderID" ControlID="labelHeaderIDFromList" Type="Int32"/>
        </WhereParameters>
    </asp:EntityDataSource>
    </form>
</body>

Implementação com texto de comando

Marca-up, na seção anterior mostra uma implementação que usa um Where cláusula para exibir SalesOrderDetail entidades associadas com um SalesOrderHeader. O mesmo resultado pode ser obtido por um CommandText com uma consulta do Entity SQL. Nesse caso, o parâmetro é usado com uma consulta que contenha uma correlação esquerda.A correlação esquerda localiza propriedades de ambos os SalesOrderHeader e SalesOrderDetail entidades.

<body>
    <form id="form1" >
    <div style="height: 430px; width: 805px">
    
        Search Sales Orders <br />
        Select Order ID:&nbsp;&nbsp;&nbsp;&nbsp;
        <br />
        
        <asp:Label ID="LabelHeaderID" 
         Text="SalesOrderHeaderID:"
        style="position:absolute; left:200px; top:40px"></asp:Label>
        
        <asp:Label ID="LabelHeaderIDFromList"  Text=""
        style="position:absolute; left:375px; top:40px"></asp:Label>
        <br />
        <asp:ListBox ID="ListBox1" 
            DataSourceID="EntDatSrc_OrderID"
            DataTextField="SalesOrderID" 
            DataValueField="SalesOrderID" Height="285px" 
            Width="100px" style="position:absolute;
            left:50px; top:80px" 
            AutoPostBack="True"
            onselectedindexchanged="ListBox1_SelectedIndexChanged">
        </asp:ListBox>
        <asp:GridView ID="GridView1"  
            style="position:absolute; left:200px; top:80px"
            AllowPaging="false">
        </asp:GridView>
        <br />
    
    </div>
    <asp:EntityDataSource ID="EntDatSrc_OrderID"  
        DefaultContainerName="AdventureWorksEntities"
        EntitySetName="SalesOrderHeader" 
        Select="it.[SalesOrderID]"
        ConnectionString="name=AdventureWorksEntities">
    </asp:EntityDataSource>
    
    <asp:EntityDataSource ID="EntDatSrcOrderDetails"  
        DefaultContainerName="AdventureWorksEntities"        
        CommandText="SELECT soh.SalesOrderID, sod.SalesOrderDetailID, 
        sod.OrderQty, sod.ProductID, sod.UnitPrice, sod.ModifiedDate 
        FROM AdventureWorksEntities.SalesOrderHeader 
        AS soh, soh.SalesOrderDetail AS sod 
        WHERE soh.SalesOrderID = @parSalesOrderID" 
        ConnectionString="name=AdventureWorksEntities" >
        <CommandParameters>
            <asp:ControlParameter Name="parSalesOrderID"
            ControlID="LabelHeaderIDFromList" Type="Int32"/>
        </CommandParameters>
    </asp:EntityDataSource>
    
    </form>
</body>

Consulte também

Conceitos

EntityDataSource Designer

Outros recursos

Seleção de dados usando EntityDataSource