Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Du kan definiera relationer mellan entiteter i din BDC-modell (Business Data Connectivity) genom att skapa associationer. Visual Studio genererar metoder som ger användare av modellen information om varje association. Dessa metoder kan användas av SharePoint-webbdelar, listor eller anpassade program för att visa datarelationer i ett användargränssnitt (UI).
Skapa en association
Skapa en association genom att välja Association-kontrollen i Visual Studio Toolbox, välja den första entiteten (kallas källentiteten) och sedan välja den andra entiteten (kallas målentiteten). Du kan definiera information om associationen i associationsredigeraren. Mer information finns i Så här skapar du en association mellan entiteter.
Associationsmetoder
Program som SharePoint-webbdelar för affärsdata använder associationer genom att anropa metoder i tjänstklassen för en entitet. Du kan lägga till metoder i tjänstklassen för en entitet genom att välja dem i associationsredigeraren.
Som standard lägger associationsredigeraren till en associationsnavigeringsmetod till käll- och målentiteterna. Med en associationsnavigeringsmetod i källentiteten kan användarna hämta en lista över målentiteter. Med en associationsnavigeringsmetod i målentiteten kan användarna hämta källentiteten som relaterar till en målentitet.
Du måste lägga till koden i var och en av dessa metoder för att returnera lämplig information. Du kan också lägga till andra typer av metoder för att stödja mer avancerade scenarier. Mer information om var och en av dessa metoder finns i Åtgärder som stöds.
Typer av associationer
Du kan skapa två typer av associationer i BDC-designern: externa nyckelbaserade associationer och externa nyckellösa associationer.
Extern nyckelbaserad association
Du kan skapa en association baserad på främmande nyckel genom att koppla en identifierare i källentiteten till deskriptorer som definierats i målentiteten. Den här relationen gör det möjligt för användare av modellen att tillhandahålla ett förbättrat användargränssnitt för sina användare. Till exempel ett formulär i Outlook som gör det möjligt för en användare att skapa en försäljningsorder som kan visa kunder i en listruta. eller en lista över försäljningsorder i SharePoint som gör det möjligt för användare att öppna en profilsida för en kund.
För att skapa en främmande nyckelbaserad association relaterar du identifierare och typbeskrivningar som delar samma namn och typ. Du kan till exempel skapa en sekundär nyckelbaserad association mellan en entitet Contact och en entitet SalesOrder . Entiteten SalesOrder returnerar en ContactID typbeskrivning som en del av returparametern för Finder- eller Specific Finder-metoder. Båda typbeskrivningarna visas i associationredigeraren. För att skapa en främmande nyckel-baserad relation mellan entiteten Contact och entiteten SalesOrder, välj identifieraren ContactID bredvid vart och ett av dessa fält.
Lägg till kod i metoden Association Navigator för källentiteten som returnerar en samling målentiteter. I följande exempel returneras försäljningsorder för en kontakt.
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;
}
Lägg till kod i metoden Association Navigator för målentiteten som returnerar en källentitet. I följande exempel returneras den kontakt som är relaterad till försäljningsordern.
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;
}
Extern nyckellös association
Du kan skapa en association utan att mappa identifierare till fälttypsbeskrivningar. Skapa den här typen av association när källentiteten inte har någon direkt relation till målentiteten. En SalesOrderDetail tabell har till exempel ingen extern nyckel som mappar till en primärnyckel i en Contact tabell.
Om du vill visa information i tabellen SalesOrderDetail som relaterar till en Contactkan du skapa en sekundär nyckellös association mellan entiteten Contact och SalesOrderDetail entiteten.
I metoden Association Navigation för Contact entiteten returnerar du entiteterna SalesOrderDetail genom att ansluta tabeller eller genom att anropa en lagrad procedur.
I följande exempel returneras information om alla försäljningsorder genom att koppla tabeller.
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;
}
I Association Navigation-metoden för entiteten SalesOrderDetail returneras den relaterade Contact. I följande exempel visas detta.
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;
}