![]() |
VOOZH | about |
Microsoft Entity Framework serves as an object-relational mapping framework for working with data represented as objects. Although Visual Studio offers the ADO.NET Entity Data Model wizard to automatically generate the Entity Model, this model-first approach may present challenges when your data source undergoes changes or when you require greater control over entity operations. In this article, we will delve into the code-first approach for accessing Elasticsearch data through the CData ADO.NET Provider, providing you with more flexibility and control.
Accessing and integrating live data from Elasticsearch has never been easier with CData. Customers rely on CData connectivity to:
Users frequently integrate Elasticsearch data with analytics tools such as Crystal Reports, Power BI, and Excel, and leverage our tools to enable a single, federated access layer to all of their data sources, including Elasticsearch.
For more information on CData's Elasticsearch solutions, check out our Knowledge Base article: CData Elasticsearch Driver Features & Differentiators.
Modify the App.config file in the project to add a reference to the Elasticsearch Entity Framework 6 assembly and the connection string.
Set the Server and Port connection properties to connect. To authenticate, set the User and Password properties, PKI (public key infrastructure) properties, or both. To use PKI, set the SSLClientCert, SSLClientCertType, SSLClientCertSubject, and SSLClientCertPassword properties.
The data provider uses X-Pack Security for TLS/SSL and authentication. To connect over TLS/SSL, prefix the Server value with 'https://'. Note: TLS/SSL and client authentication must be enabled on X-Pack to use PKI.
Once the data provider is connected, X-Pack will then perform user authentication and grant role permissions based on the realms you have configured.
<configuration> ... <connectionStrings> <add name="ElasticsearchContext" connectionString="Offline=False;Server=127.0.0.1;Port=9200;User=admin;Password=123456;" providerName="System.Data.CData.Elasticsearch" /> </connectionStrings> <entityFramework> <providers> ... <provider invariantName="System.Data.CData.Elasticsearch" type="System.Data.CData.Elasticsearch.ElasticsearchProviderServices, System.Data.CData.Elasticsearch.Entities.EF6" /> </providers> <entityFramework> </configuration> </code>
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Data.Entity.ModelConfiguration.Conventions;
class ElasticsearchContext : DbContext {
public ElasticsearchContext() { }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// To remove the requests to the Migration History table
Database.SetInitializer<ElasticsearchContext>(null);
// To remove the plural names
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
using System.Data.Entity.ModelConfiguration;
using System.ComponentModel.DataAnnotations.Schema;
[System.ComponentModel.DataAnnotations.Schema.Table("Orders")]
public class Orders {
[System.ComponentModel.DataAnnotations.Key]
public System.String OrderName { get; set; }
public System.String Freight { get; set; }
}
public DbSet<Orders> Orders { set; get; }
ElasticsearchContext context = new ElasticsearchContext(); context.Configuration.UseDatabaseNullSemantics = true; var query = from line in context.Orders select line;
Download a free trial of the Elasticsearch Data Provider to get started:
Download NowLearn more:
👁 Elasticsearch IconRapidly create and deploy powerful .NET applications that integrate with Elasticsearch.