Siguiendo con la serie de posts sobre las novedades que se incorporan en Business Connectivity Services (BCS) en SharePoint 2013, en esta ocasión vamos a ver como podemos consultar datos de negocio expuestos por BCS a través del modelo de objetos en cliente (novedad para BCS). Pero antes os recuerdo los posts previos de la serie:
Para ver el modelo de objetos en cliente de BCS en acción, necesitamos en primer lugar una lista externa creada a partir del correspondiente Tipo de Contenido Externo (ECT) ya sea con Visual Studio 2012 (VS 2012) o con SharePoint Designer 2013 (SP 2013):

-
En VS 2012 creamos un proyecto de tipo aplicación de consola y añadimos las referencias necesarias para trabajar con el modelo de objetos en cliente de SharePoint 2013 y de BCS: Microsoft.SharePoint, Microsoft.SharePoint.Client.Runtime y Microsoft.BusinessData.
-
Añadimos las siguientes directivas using necesarias para poder utilizar el modelo de objetos en cliente.
1: using MO_Cliente = Microsoft.SharePoint.Client;
2: using Microsoft.BusinessData.MetadataModel;
3: using Microsoft.BusinessData.MetadataModel.Collections;
4: using BCS_Runtime= Microsoft.BusinessData.Runtime;
5: using Microsoft.BusinessData;
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, «Courier New», courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
1: static void ConsultarEntidadBCS()
2: {
3: try
4: {
5: using (MO_Cliente.ClientContext ctx =
6: new MO_Cliente.ClientContext(
7: "http://winsrv2012/IT/"))
8: {
9: MO_Cliente.Web wWeb = ctx.Web;
10: ctx.Load(wWeb);
11:
12: //Instancia de una entidad del ECT y del sistema de negocio
13: Entity eEntity =
14: ctx.Web.GetEntity(
15: "CRMECT.CRMModel", "Contacto");
16: LobSystem lobSistema = eEntity.GetLobSystem();
17:
18: //Colección de instancias de sistemas de negocio
19: LobSystemInstanceCollection lsic =
20: eEntity.GetLobSystem().GetLobSystemInstances();
21: ctx.Load(lsic);
22: ctx.ExecuteQuery();
23:
24: //Sistema de negoco concreto
25: LobSystemInstance lobSystemInstance = lsic[0];
26: // Accedemos a la colección de filtros para un cierto "Finder"
27: FilterCollection fCollection =
28: eEntity.GetFilters("VisualizarContactos");
29:
30: //Acceso a los datos de negocio
31: EntityInstanceCollection eicResultado=
32: eEntity.FindFiltered(fCollection,
33: "VisualizarContactos", lobSystemInstance);
34: ctx.Load(eicResultado);
35: ctx.ExecuteQuery();
36: int iContador = 1;
37: foreach (var r in eicResultado)
38: {
39: Console.WriteLine("Registro # {0}", iContador);
40: Console.WriteLine(" -> ID: " + r.FieldValues["IDContacto"]);
41: Console.WriteLine(" -> Nombre: " + r.FieldValues["sNombre"]);
42: Console.WriteLine(" -> Apellidos: " + r.FieldValues["sApellidos"]);
43: Console.WriteLine(" -> Dirección: " + r.FieldValues["sDireccion"]);
44: Console.WriteLine(" -> E-Mail: " + r.FieldValues["sEMail"]);
45:
46: iContador = iContador + 1;
47: }
48: }
49: }
50: catch (Exception ex)
51: {
52: Console.WriteLine(
53: "Error: ", ex.Message);
54: }
55: }
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, «Courier New», courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

Referencias: