Sdílet prostřednictvím


Vytváření přidružení mezi entitami

Můžete definovat vztahy mezi entitami v obchodních dat připojení (BDC) vytvořením přidružení modelu.Visual Studio generuje metody, které poskytují informace o každé přidružení spotřebitelů modelu.Tyto metody mohou být spotřebovány ve webové části SharePoint, seznamy nebo vlastní aplikace pro zobrazení dat relace v uživatelském rozhraní (UI).

Vytvoření přidružení

Vytvoření přidružení výběrem sdružení ovládacího prvku v aplikaci Visual Studio nástrojů, volba prvního subjektu (označované jako zdrojové entity) a potom zvolíte druhé entity (nazývané cílová entita).Můžete definovat podrobnosti přidružení v Přidružení editoru.Další informace naleznete v tématu Postupy: Vytvoření přidružení mezi entitami.

Metody přidružení

Aplikace, jako jsou webové části SharePoint obchodních dat spotřebovat sdružení voláním metod třídy služby entity.Můžete přidat metody třídy služby entity v jejich výběrem Přidružení editoru.

Standardně Přidružení editoru přidá metodu přidružení navigace zdrojové a cílové entity.Metodu přidružení navigace ve zdrojové entity umožňuje načíst seznam subjektů cílových spotřebitelů.Metodu přidružení navigace v cílové entitě umožňuje spotřebitelům načítat zdrojové entity, která se týká cílové entity.

Každé z těchto metod vrátit příslušné informace, je nutné přidat kód.Můžete také přidat další typy metod pro podporu více pokročilejších scénářů.Další informace o každé z těchto metod naleznete v Operace podporována.

Typy přidružení

Můžete vytvořit dva typy přidružení v Návrháři modelu služby BDC: cizí klíč na základě přidružení a přidružení cizího bez kódu.

Cizí klíč na základě přidružení

Je-li vytvořit cizí klíč na základě přidružení, týkající se identifikátor entity zdroje zadejte popisovačů definovaný v cílové entitě.Tento vztah umožňuje spotřebitelům model poskytuje vylepšené uživatelské rozhraní pro jejich uživatele.Například formulář aplikace Outlook, který umožňuje uživateli vytvořit prodejní objednávku, můžete zobrazit zákazníky v rozevíracím seznamu; nebo seznam služby SharePoint, který umožňuje uživatelům otevřít stránku profilu pro zákazníka prodejních objednávek.

Vytvořit cizí klíč na základě přidružení, se týkají identifikátory a popisovačů, které sdílejí stejný název a typ zadejte.Můžete například vytvořit cizí klíč na základě přidružení mezi Contact entity a SalesOrder entity.SalesOrder Vrátí entity ContactID zadejte popisovač jako součást návratový parametr metody Finder nebo konkrétní vyhledávač.Se i typ popisovače v Přidružení editoru.Vytvořit cizí klíč na základě vztahu mezi Contact entity a SalesOrder entity, zvolte ContactID identifikátor u každé z těchto polí.

Přidejte kód metody zdrojové entity, která vrátí kolekci cílové entity Navigator přidružení.Následující příklad vrátí prodejních objednávek pro kontakt.

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;
}

Přidejte kód do metody přidružení Navigator cílové entity, která vrátí zdrojové entity.Následující příklad vrátí kontakt, který se vztahuje k prodejní objednávce.

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;

}

Přidružení cizího bez kódu

Vytvořit přidružení bez mapování identifikátorů popisovače typu pole.Tento druh přidružení vytvořte, pokud zdrojová entita nemá přímý vztah s entitou cílového.Například SalesOrderDetail tabulka cizí klíč, který se mapuje na primární klíč v nemá Contact tabulky.

Pokud chcete zobrazit informace SalesOrderDetail tabulky, která se týká Contact, můžete vytvořit cizí bez kódu přidružení mezi Contact entity a SalesOrderDetail entity.

V metodě přidružení navigace Contact entity návrat SalesOrderDetail entity spojení tabulek nebo volání uložené procedury.

Následující příklad vrátí spojením tabulky Podrobnosti všech prodejních objednávek.

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;
}

V metodě přidružení navigace SalesOrderDetail entity, vrátit související Contact.Následující příklad ukazuje 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;
}

Viz také

Úkoly

Postupy: Vytvoření přidružení mezi entitami

Další zdroje

Navrhování modelu připojení obchodních dat