Přidružení mezi entitami
Vztahy mezi entitami v modelu BDC (Business Data Připojení ivity) můžete definovat vytvořením přidružení. Visual Studio generuje metody, které uživatelům modelu poskytují informace o jednotlivých přidruženích. Tyto metody můžou využívat webové části, seznamy nebo vlastní aplikace SharePointu k zobrazení relací dat v uživatelském rozhraní.
Vytvoření přidružení
Vytvořte přidružení výběrem ovládacího prvku Association v sadě nástrojů sady Visual Studio, výběrem první entity (označované jako zdrojová entita) a následným výběrem druhé entity (označované jako cílová entita). Podrobnosti o přidružení můžete definovat v Editoru přidružení. Další informace naleznete v tématu Postupy: Vytvoření přidružení mezi entitami.
Metody přidružení
Aplikace, jako jsou webové části obchodních dat SharePointu, využívají přidružení voláním metod ve třídě služby entity. Metody můžete přidat do třídy služby entity tak, že je vyberete v Editoru přidružení.
Editor přidružení ve výchozím nastavení přidá metodu navigace přidružení do zdrojových a cílových entit. Metoda navigace přidružení ve zdrojové entitě umožňuje příjemcům načíst seznam cílových entit. Metoda navigace přidružení v cílové entitě umožňuje příjemcům načíst zdrojovou entitu, která souvisí s cílovou entitou.
Abyste mohli vrátit příslušné informace, musíte do každé z těchto metod přidat kód. Můžete také přidat další typy metod pro podporu pokročilejších scénářů. Další informace o každé z těchto metod naleznete v tématu Podporované operace.
Typy přidružení
V návrháři služby BDC můžete vytvořit dva typy přidružení: přidružení založená na cizích klíčích a přidružení bez cizích klíčů.
Přidružení založené na cizím klíči
Přidružení založené na cizím klíči můžete vytvořit tak, že ve zdrojové entitě propojíte identifikátor s popisovači typu definovanými v cílové entitě. Tento vztah umožňuje uživatelům modelu poskytovat uživatelům vylepšené uživatelské rozhraní. Například formulář v Outlooku, který uživateli umožňuje vytvořit prodejní objednávku, která může zobrazit zákazníky v rozevíracím seznamu; nebo seznam prodejních objednávek v SharePointu, který uživatelům umožňuje otevřít stránku profilu pro zákazníka.
Pokud chcete vytvořit přidružení založené na cizím klíči, spojte identifikátory a popisovače typu, které sdílejí stejný název a typ. Můžete například vytvořit přidružení založené na cizím klíči mezi entitou Contact
a entitou SalesOrder
. Entita SalesOrder
vrátí ContactID
popisovač typu jako součást návratového parametru Finderu nebo konkrétních vyhledávacích metod. Oba popisovače typu se zobrazí v Editoru přidružení. Pokud chcete vytvořit vztah založený na cizím klíči mezi entitou Contact
a SalesOrder
entitou, zvolte ContactID
identifikátor vedle každého z těchto polí.
Přidejte kód do metody Association Navigator zdrojové entity, která vrací kolekci cílových entit. Následující příklad vrátí prodejní objednávky kontaktu.
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 Association Navigator cílové entity, která vrací zdrojovou entitu. Následující příklad vrátí kontakt, který souvisí s prodejní objednávkou.
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í bez cizích klíčů
Přidružení můžete vytvořit bez identifikátorů mapování na popisovače typu pole. Tento druh přidružení vytvořte, pokud zdrojová entita nemá přímý vztah s cílovou entitou. Například SalesOrderDetail
tabulka nemá cizí klíč, který se mapuje na primární klíč v Contact
tabulce.
Pokud chcete zobrazit informace v SalesOrderDetail
tabulce, která souvisí s danou entitouContact
, můžete vytvořit přidružení cizího klíče mezi entitou a SalesOrderDetail
entitouContact
.
V metodě Contact
Navigace přidružení entity, vrátit SalesOrderDetail
entity spojením tabulek nebo voláním uložené procedury.
Následující příklad vrátí podrobnosti o všech prodejních objednávkách spojením tabulek.
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 Asociační navigační metoda SalesOrderDetail
entity, vrátit související Contact
. Následující příklad ukazuje 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;
}