LINQ to SAP Business Warehouse Data
This article illustrates using LINQ to access tables within the SAP Business Warehouse via the CData ADO.NET Data Provider for SAP Business Warehouse. To achieve this, we will use LINQ to Entity Framework, which facilitates the generation of connections and can be seamlessly employed with any CData ADO.NET Data Providers to access data through LINQ.
See the help documentation for a guide to setting up an EF 6 project to use the provider.
- In a new project in Visual Studio, right-click on the project and choose to add a new item. Add an ADO.NET Entity Data Model.
- Choose EF Designer from Database and click Next.
- Add a new Data Connection, and change your data source type to "CData SAP Business Warehouse Data Source".
Enter your data source connection information.
To connect to SAP Business Warehouse, set the URL property to a valid SAP Business Warehouse server base URL. The driver must connect to SAP Business Warehouse instances hosted over HTTP with XMLA access.
The driver supports the following authentication schemes via the AuthScheme property:
- None: Anonymous authentication, if available on the server.
- Basic: Set User and Password and set AuthScheme to Basic.
- Kerberos: See the Using Kerberos section of the help documentation for the required Kerberos properties.
By default, the driver attempts to negotiate SSL/TLS by checking the server's certificate against the system's trusted certificate store. To specify another certificate, see the SSLServerCert property for the available formats.
Below is a typical connection string:
URL=https://mysapserver:8000;AuthScheme=Basic;User=username;Password=password;
- If saving your entity connection to App.Config, set an entity name. In this example we are setting SAPBusinessWarehouseEntities as our entity connection in App.Config.
- Enter a model name and select any tables or views you would like to include in the model.
Using the entity you created, you can now perform select commands. For example:
SAPBusinessWarehouseEntities context = new SAPBusinessWarehouseEntities();
var salesQuery = from sales in context.Sales
select sales;
foreach (var result in salesQuery) {
Console.WriteLine("{0} {1} ", result.Id, result.CustomerCount);
}
See "LINQ and Entity Framework" chapter in the help documentation for example queries of the supported LINQ.