Étape 3 de la planification : Déterminer les identificateurs pour chaque entité
Dernière modification : lundi 19 avril 2010
S’applique à : SharePoint Server 2010
Pour chaque type de contenu externe, vous devez déterminer les champs qui identifient de façon univoque une instance de ce type de contenu externe. Sans identificateur, le Service BDC (Business Data Connectivity) ne peut pas identifier une instance d’entité de manière unique. Les données renvoyées par une méthode d’application principale sont un simple objet BLOB de données sans identificateurs. C’est seulement si les données renvoyées possèdent aussi des identificateurs que les données ont un sens dans le service BDC, et c’est uniquement dans ce cas que vous pouvez mettre en œuvre des actions pour les entités, effectuer des recherches sur les entités et analyser les entités.
Par exemple, la classe Customer du proxy SampleWebService contient un champ nommé CustomerID qui identifie de façon univoque une instance de client. Par conséquent, CustomerID peut être utilisé comme identificateur pour le type de contenu externe Customer. Voici la définition de la classe Customer du proxy du service Web.
public partial class Customer {
private string customerIDField;
private string nameField;
private System.Nullable<long> workPhoneNumberField;
private System.Nullable<long> mobilePhoneNumberField;
private string industryField;
private string webSiteField;
private CustomerAddress[] customerAddressesField;
private string parentCustomerIDField;
/// <remarks/>
public string CustomerID { get { return this.customerIDField; } set { this.customerIDField = value; }
}
/// <remarks/>
public string Name {
get {
return this.nameField;
}
set {
this.nameField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]
public System.Nullable<long> WorkPhoneNumber {
get {
return this.workPhoneNumberField;
}
set {
this.workPhoneNumberField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]
public System.Nullable<long> MobilePhoneNumber {
get {
return this.mobilePhoneNumberField;
}
set {
this.mobilePhoneNumberField = value;
}
}
/// <remarks/>
public string Industry {
get {
return this.industryField;
}
set {
this.industryField = value;
}
}
/// <remarks/>
public string WebSite {
get {
return this.webSiteField;
}
set {
this.webSiteField = value;
}
}
/// <remarks/>
public CustomerAddress[] CustomerAddresses {
get {
return this.customerAddressesField;
}
set {
this.customerAddressesField = value;
}
}
/// <remarks/>
public string ParentCustomerID {
get {
return this.parentCustomerIDField;
}
set {
this.parentCustomerIDField = value;
}
}
}
public Customer(string id, string name, uint? workphone, uint? mobilephone, string industry, string website, CustomerAddress[] custaddresses, string parentid)
{
this.CustomerID = id;
this.Name = name;
this.WorkPhoneNumber = workphone;
this.MobilePhoneNumber=mobilephone;
this.Industry = industry;
this.WebSite = website;
this.CustomerAddresses = custaddresses;
this.ParentCustomerID = parentid;
}
}
Toutefois, pour la classe LineItem, OrderID et ProductID constituent à eux deux une instance LineItem. Par conséquent, vous déclarez OrderID et ProductID comme identificateurs pour le type de contenu externe LineItem, comme illustré dans l’exemple de code suivant.
public partial class LineItem {
private string orderIDField;
private string productIDField;
private string productNameField;
private int orderQtyField;
private decimal unitPriceField;
private decimal lineTotalField;
/// <remarks/>
public string OrderID { get { return this.orderIDField; } set { this.orderIDField = value; } }
/// <remarks/>
public string ProductID { get { return this.productIDField; } set { this.productIDField = value; } }
/// <remarks/>
public string ProductName {
get {
return this.productNameField;
}
set {
this.productNameField = value;
}
}
/// <remarks/>
public int OrderQty {
get {
return this.orderQtyField;
}
set {
this.orderQtyField = value;
}
}
/// <remarks/>
public decimal UnitPrice {
get {
return this.unitPriceField;
}
set {
this.unitPriceField = value;
}
}
/// <remarks/>
public decimal LineTotal {
get {
return this.lineTotalField;
}
set {
this.lineTotalField = value;
}
}
}
Cependant, dans certains cas, un type de contenu externe particulier n’a pas besoin d’identificateur, par exemple le type de contenu externe Address du proxy SampleWebService. Le type de contenu externe Address n’a pas d’identificateur, puisque nous souhaitons simplement afficher une liste d’adresses pour un client. Autrement dit, il s’agit simplement d’un objet blob de données ; vous ne pouvez pas exécuter d’actions sur ce type de contenu externe, utiliser le sélecteur d’instance de type de contenu externe, créer des associations avec le type de contenu externe, y effectuer des recherches ou des analyses, et ainsi de suite.
public partial class CustomerAddress {
private CustomerStreet streetField;
private string cityField;
private States stateProvinceField;
private string countryRegionField;
private string postalCodeField;
/// <remarks/>
public CustomerStreet Street {
get {
return this.streetField;
}
set {
this.streetField = value;
}
}
/// <remarks/>
public string City {
get {
return this.cityField;
}
set {
this.cityField = value;
}
}
/// <remarks/>
public States StateProvince {
get {
return this.stateProvinceField;
}
set {
this.stateProvinceField = value;
}
}
/// <remarks/>
public string CountryRegion {
get {
return this.countryRegionField;
}
set {
this.countryRegionField = value;
}
}
/// <remarks/>
public string PostalCode {
get {
return this.postalCodeField;
}
set {
this.postalCodeField = value;
}
}
}
Étapes suivantes
Étape de planification 4 : Identifier les filtres requis pour chaque entité