Udostępnij za pośrednictwem


Tworzenie skojarzenia między obiektami

Można zdefiniować relacje między obiektami w modelu łączności danych biznesowych (BDC) przez tworzenie skojarzeń.Visual Studio generuje metody, które zapewniają konsumentom modelu z informacji na temat każdego stowarzyszenia.Metody te mogą być spożywane przez składniki web Part programu SharePoint, listy lub niestandardowych aplikacji do wyświetlania relacji między danymi w interfejsie użytkownika (UI).

Tworzenie skojarzenia

Utworzyć skojarzenie, wybierając stowarzyszenia formantu w programie Visual Studio Przybornikoraz pierwszej jednostce (o nazwie encji źródłowej), a następnie wybierając drugi obiekt (o nazwie jednostki docelowej).Można zdefiniować szczegóły skojarzenia w Skojarzenia edytora.Aby uzyskać więcej informacji, zobacz Jak: Tworzenie skojarzenia między obiektami.

Metody skojarzenia

Aplikacje, takie jak składniki web Part danych biznesowych programu SharePoint zużywają skojarzeń przez wywołanie metody w klasie usługi podmiotu.Metody można dodać do klasy usługi podmiotu, wybierając je w Skojarzenia edytora.

Domyślnie Skojarzenia edytora dodaje metodę nawigacji skojarzenia do jednostek źródłowych i docelowych.Metoda nawigacji skojarzenia w encji źródłowej umożliwia konsumentów do pobierania listy podmiotów przeznaczenia.Metoda nawigacji skojarzenia w obiekt docelowy umożliwia konsumentom pobrać encji źródłowej, który odnosi się do obiektu docelowego.

Należy dodać kod do każdej z tych metod, aby zwrócić odpowiednie informacje.Można również dodać inne typy metod do obsługi bardziej zaawansowanych scenariuszy.Aby uzyskać więcej informacji na temat każdego z tych metod, zobacz Obsługiwane operacje.

Typy skojarzeń

Można utworzyć dwa typy skojarzeń w Projektancie usługi BDC: oparte na kluczach stowarzyszenia zagraniczne i zagraniczne stowarzyszenia uchwyt.

Ee348596.collapse_all(pl-pl,VS.110).gifSkojarzenie oparte na klucz obcy

Zagranicznych stowarzyszenie oparte na kluczach można utworzyć przez identyfikator w encji źródłowej, wpisać deskryptory zdefiniowane w obiekt docelowy.Związek ten umożliwia konsumentom modelu zapewniają rozszerzony interfejs użytkownika dla swoich użytkowników.Na przykład, formularz w programie Outlook, który umożliwia użytkownikowi tworzenie zamówienia sprzedaży, który może wyświetlać klientów z listy rozwijanej; lub listę zamówień sprzedaży programu SharePoint, która umożliwia użytkownikom otwieranie strony profilu dla klienta.

Aby utworzyć zagranicznych stowarzyszenie oparte na kluczach, odnoszą się identyfikatory i wpisz deskryptorów, które współużytkują tę samą nazwę i typ.Na przykład, można utworzyć zagranicznych stowarzyszenie oparte na kluczach między Contact encji i SalesOrder encji.SalesOrder Zwraca obiekt ContactID typ deskryptora jako część parametru zwrotnego metod Finder lub określonej metody wyszukiwania.Zarówno deskryptorów typu pojawiają się w Skojarzenia edytora.Do tworzenia obcy klucz na podstawie relacji między Contact encji i SalesOrder encji, wybierz ContactID identyfikator obok każdego z tych pól.

Dodaj kod do metody skojarzenia Navigator encji źródłowej, która zwraca kolekcję obiektów miejsce docelowe.Poniższy przykład zwraca zamówień sprzedaży dla kontaktu.

Public Shared Function ContactToSalesOrder(ByVal contactID As Integer) As IEnumerable(Of SalesOrderHeader)
    Const ServerName As String = "MySQLServerName"
    Dim dataContext As AdventureWorksDataContext = _
        New AdventureWorksDataContext("Data Source=" & ServerName & _
            ";Initial Catalog=AdventureWorks;Integrated Security=True")

    Dim orderList As IEnumerable(Of SalesOrderHeader) = _
        From orders In dataContext.SalesOrderHeaders _
        Where orders.ContactID = contactID _
              Select orders
    Return orderList

End Function
public static IEnumerable<SalesOrderHeader> ContactToSalesOrder(int contactID)
{
    const string ServerName = "MySQLServerName";
    AdventureWorksDataContext dataContext = new AdventureWorksDataContext
          ("Data Source=" + ServerName + ";" +
           "Initial Catalog=AdventureWorks;Integrated Security=True");

    IEnumerable<SalesOrderHeader> orderList = 
        from orders in dataContext.SalesOrderHeaders
             where orders.ContactID == contactID
             select orders;
    return orderList;
}

Dodaj kod do metody skojarzenia Navigator obiekt docelowy, które zwraca obiekt źródłowy.Poniższy przykład zwraca kontaktu, który jest powiązany z zamówienia sprzedaży.

Public Shared Function SalesOrderToContact(ByVal salesOrderID As Integer) As IEnumerable(Of Contact)

    Const ServerName As String = "MySQLServerName"
    Dim dataContext As AdventureWorksDataContext = _
        New AdventureWorksDataContext("Data Source=" & ServerName & _
            ";Initial Catalog=AdventureWorks;Integrated Security=True")

    Dim TempContactID As Integer = _
        (From orders In dataContext.SalesOrderHeaders _
        Where orders.SalesOrderID = salesOrderID _
        Select orders.ContactID).[Single]()

    Dim contactList As IEnumerable(Of Contact) = _
        From contacts In dataContext.Contacts _
        Where contacts.ContactID = TempContactID _
        Select contacts
    Return contactList

End Function
public static IEnumerable<Contact> SalesOrderToContact(int salesOrderID)
{
    const string ServerName = "MySQLServerName";
    AdventureWorksDataContext dataContext = new AdventureWorksDataContext
          ("Data Source=" + ServerName + ";" +
           "Initial Catalog=AdventureWorks;Integrated Security=True");

    int TempContactID = (from orders in dataContext.SalesOrderHeaders
                     where orders.SalesOrderID == salesOrderID
                     select orders.ContactID).Single();

    IEnumerable<Contact> contactList = from contacts in dataContext.Contacts
                                     where contacts.ContactID == TempContactID
                                     select contacts;
    return contactList;

}

Ee348596.collapse_all(pl-pl,VS.110).gifStowarzyszenie uchwyt zagranicznej

Bez mapowania identyfikatorów do deskryptorów typu pola, można utworzyć skojarzenie.Tworzenie tego rodzaju skojarzenie encji źródłowej ma bezpośredni związek z obiektem docelowym.Na przykład SalesOrderDetail tabela nie ma klucza obcego, który jest mapowany do klucza podstawowego w Contact tabeli.

Jeśli chcesz wyświetlić informacje w SalesOrderDetail tabela, która odnosi się do Contact, można utworzyć zagranicznych uchwyt skojarzenie między Contact encji i SalesOrderDetail encji.

W metodzie nawigacji skojarzenia Contact encji zwrotu SalesOrderDetail podmioty przez Sprzęganie tabel lub przez wywołanie procedury przechowywanej.

Poniższy przykład zwraca szczegóły dotyczące wszystkich zamówień sprzedaży przez sprzęgania tabel.

Public Shared Function ContactToSalesOrderDetail(ByVal contactID As Integer) As IEnumerable(Of SalesOrderDetail)
    Const ServerName As String = "MySQLServerName"
    Dim dataContext As AdventureWorksDataContext = _
        New AdventureWorksDataContext("Data Source=" & ServerName & _
            ";Initial Catalog=AdventureWorks;Integrated Security=True")

    Dim orderList As IEnumerable(Of SalesOrderDetail) = _
        From orders In dataContext.SalesOrderHeaders _
        Join orderDetails In dataContext.SalesOrderDetails On _
            orders.SalesOrderID Equals orderDetails.SalesOrderID _
        Where orders.ContactID = contactID _
        Select orderDetails
    Return orderList

End Function
public static IEnumerable<SalesOrderDetail> ContactToSalesOrderDetail(int contactID)
{
    const string ServerName = "MySQLServerName";
    AdventureWorksDataContext dataContext = new AdventureWorksDataContext
          ("Data Source=" + ServerName + ";" +
           "Initial Catalog=AdventureWorks;Integrated Security=True");

    IEnumerable<SalesOrderDetail> orderList =
        from orders in dataContext.SalesOrderHeaders
        join orderDetails in dataContext.SalesOrderDetails on
            orders.SalesOrderID equals orderDetails.SalesOrderID
        where orders.ContactID == contactID
        select orderDetails;
    return orderList;
}

W metodzie nawigacji skojarzenia SalesOrderDetail encji, zwrócić powiązanych Contact.Poniższy przykład ilustruje to.

Public Shared Function SalesOrderDetailToContact(ByVal salesOrderID As Integer, ByVal salesOrderDetailID As Integer) As IEnumerable(Of Contact)
    Const ServerName As String = "MySQLServerName"
    Dim dataContext As AdventureWorksDataContext = _
        New AdventureWorksDataContext("Data Source=" & ServerName & _
            ";Initial Catalog=AdventureWorks;Integrated Security=True")

    Dim TempContactID As Integer = _
        (From orders In dataContext.SalesOrderHeaders _
        Where orders.SalesOrderID = salesOrderID _
        Select orders.ContactID).[Single]()

    Dim contactList As IEnumerable(Of Contact) = _
        From contacts In dataContext.Contacts _
        Where contacts.ContactID = TempContactID _
        Select contacts
    Return contactList

End Function
public static IEnumerable<Contact> SalesOrderDetailToContact(int salesOrderID, int salesOrderDetailID)
{
    const string ServerName = "MySQLServerName";
    AdventureWorksDataContext dataContext = new AdventureWorksDataContext
          ("Data Source=" + ServerName + ";" +
           "Initial Catalog=AdventureWorks;Integrated Security=True");

    int TempContactID = (from orders in dataContext.SalesOrderHeaders
                         where orders.SalesOrderID == salesOrderID
                         select orders.ContactID).Single();

    IEnumerable<Contact> contactList = from contacts in dataContext.Contacts
                                       where contacts.ContactID == TempContactID
                                       select contacts;
    return contactList;
}

Zobacz też

Zadania

Jak: Tworzenie skojarzenia między obiektami

Inne zasoby

Projektowanie modelu połączeń danych biznesowych