Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Relacje między jednostkami można zdefiniować w modelu usługi łączności danych biznesowych (BDC), tworząc skojarzenia. Program Visual Studio generuje metody, które zapewniają konsumentom modelu informacje o każdym skojarzeniu. Te metody mogą być używane przez składniki Web Part programu SharePoint, listy lub aplikacje niestandardowe do wyświetlania relacji danych w interfejsie użytkownika.
Tworzenie skojarzenia
Utwórz skojarzenie, wybierając kontrolkę Skojarzenie w przyborniku programu Visual Studio, wybierając pierwszą jednostkę (nazywaną jednostką źródłową), a następnie wybierając drugą jednostkę (nazywaną jednostką docelową). Szczegóły skojarzenia można zdefiniować w Edytorze skojarzeń. Aby uzyskać więcej informacji, zobacz Jak utworzyć skojarzenie między jednostkami.
Metody asocjacyjne
Aplikacje, takie jak składniki Web Part programu SharePoint do danych biznesowych, używają skojarzeń, wywołując metody w klasie serwisowej jednostki. Metody można dodać do klasy usługi jednostki, wybierając je w Edytorze skojarzeń.
Domyślnie Edytor skojarzeń dodaje metodę nawigacji skojarzenia do jednostek źródłowych i docelowych. Metoda nawigacji dla powiązań w jednostce źródłowej pozwala użytkownikom na pobranie listy jednostek docelowych. Metoda nawigacji asocjacji w jednostce docelowej pozwala konsumentom na pobieranie jednostki źródłowej, której dotyczy jednostka docelowa.
Aby zwrócić odpowiednie informacje, należy dodać kod do każdej z tych metod. Możesz również dodać inne typy metod, aby obsługiwać bardziej zaawansowane scenariusze. Aby uzyskać więcej informacji na temat każdej z tych metod, zobacz Obsługiwane operacje.
Typy skojarzeń
W projektancie usługi BDC można utworzyć dwa typy skojarzeń: skojarzenia oparte na kluczach obcych i skojarzenia bez kluczy obcych.
Asocjacja oparta na kluczach obcych
Można utworzyć skojarzenie oparte na kluczach obcych przez powiązanie identyfikatora w jednostce źródłowej z deskryptorami typów zdefiniowanymi w jednostce docelowej. Ta relacja umożliwia konsumentom modelu udostępnienie ulepszonego interfejsu użytkownika użytkownikom. Na przykład formularz w programie Outlook, który umożliwia użytkownikowi utworzenie zamówienia sprzedaży, które może wyświetlać klientów na liście rozwijanej; lub lista zamówień sprzedaży w programie SharePoint, która umożliwia użytkownikom otwieranie strony profilu dla klienta.
Aby utworzyć skojarzenie oparte na kluczach obcych, należy powiązać identyfikatory i deskryptory typów, które mają taką samą nazwę i typ. Można na przykład utworzyć skojarzenie oparte na kluczach obcych między jednostką Contact a jednostką SalesOrder . Jednostka SalesOrder zwraca ContactID deskryptor typu jako część zwracanego parametru metody wyszukiwania lub określonej metody wyszukiwania. Oba deskryptory typów są wyświetlane w Edytorze skojarzeń. Aby utworzyć relację opartą na kluczu obcym między jednostką Contact a jednostką SalesOrder, wybierz identyfikator ContactID obok każdego z tych pól.
Dodaj kod do metody Nawigator skojarzeń jednostki źródłowej, która zwraca kolekcję jednostek docelowych. Poniższy przykład zwraca zamówienia sprzedaży dla osoby kontaktowej.
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 Nawigator skojarzeń jednostki docelowej, która zwraca jednostkę źródłową. Poniższy przykład zwraca kontakt związany z zamówieniem sprzedaży.
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;
}
Skojarzenie bez klucza obcego
Można utworzyć skojarzenie bez mapowania identyfikatorów na deskryptory typów pól. Utwórz tego rodzaju skojarzenie, gdy jednostka źródłowa nie ma bezpośredniej relacji z jednostką docelową. Na przykład tabela SalesOrderDetail nie ma klucza obcego, który odnosi się do klucza podstawowego w tabeli Contact.
Jeśli chcesz wyświetlić informacje w tabeli SalesOrderDetail, które są powiązane z Contact, możesz utworzyć skojarzenie bez klucza obcego między jednostką Contact a jednostką SalesOrderDetail.
W metodzie nawigacji powiązań encji Contact zwróć encje SalesOrderDetail przez łączenie tabel lub wywołanie procedury składowanej.
Poniższy przykład zwraca szczegóły wszystkich zamówień sprzedaży przez łączenie tabel.
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 powiązań SalesOrderDetail encji zwróć powiązaną encję Contact. W poniższym przykładzie pokazano to.
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;
}