Cómo crear y ejecutar consultas de objeto con una entidad asignada a tablas independientes

Cuando se usan datos heredados en un Entity Data Model (EDM), a veces es útil poder asignar una sola entidad a dos tablas de la base de datos. Esto se puede hacer cuando dos tablas comparten una clave común, como en el caso de las tablas Customer y Store de la base de datos de ejemplo AdventureWorks que se incluye con SQL Server 2005.

El código del ejemplo de este tema usa el EDM que se define en el tema Cómo definir un modelo con una única entidad asignada a dos tablas. La ejecución de consultas de objeto en una entidad asignada a dos tablas es idéntica a la consulta de otras entidades. La asignación no afecta a la sintaxis del código.

Para crear el proyecto usando una entidad asignada a tablas independientes

  1. Cree una aplicación de consola.

  2. Agregue una referencia al EDM que se define en Cómo definir un modelo con una única entidad asignada a dos tablas.

  3. Agregue referencias a System.Data.Entity y System.Runtime.Serialization.

  4. Agregue la directiva del preprocesador para el AdventureWorksModel implementado en Cómo definir un modelo con una única entidad asignada a dos tablas.

Ejemplo

La entidad asignada a tablas independientes de este ejemplo se puede usar para enumerar los resultados en un bucle foreach. El código siguiente muestra las propiedades de ambas tablas de la asignación de entidad Store.

Option Explicit On
Option Strict On
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Text
Imports StoreCustomer_VB.AdventureWorksModel

Module Module1
    Sub Main()
        Using objCtx As AdventureWorksEntities =
                        New AdventureWorksEntities()
            For Each store As Store In objCtx.Store
                Console.WriteLine("CustomerId: {0} Name: {1} " & vbNewLine _
                    & vbTab & "Account#: {2} SalespersonId: {3}", _
                    store.CustomerID, store.Name, store.AccountNumber, store.SalesPersonID)
                Console.Write(vbNewLine)
            Next
        End Using
    End Sub
End Module
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AdventureWorksModel;

namespace ClientStoreCustomerSplit
{
    class Program
    {
        static void Main(string[] args)
        {
            using (AdventureWorksEntities objCtx = new AdventureWorksEntities())
            {
                foreach (Store store in objCtx.Store)
                    Console.WriteLine("CustomerId: {0} Name: {1} \r\n\t" +
                    "Account#: {2} SalespersonId: {3}",
                        store.CustomerID, store.Name, 
                        store.AccountNumber, store.SalesPersonID );
            }
        }
    }
}

Vea también

Tareas

Cómo definir un modelo con una única entidad asignada a dos tablas