![]() |
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 Dynamics CRM data through the CData ADO.NET Provider, providing you with more flexibility and control.
CData simplifies access and integration of live Microsoft Dynamics CRM data. Our customers leverage CData connectivity to:
CData customers use our Dynamics CRM connectivity solutions for a variety of reasons, whether they're looking to replicate their data into a data warehouse (alongside other data sources) or analyze live Dynamics CRMa data from their preferred data tools inside the Microsoft ecosystem (Power BI, Excel, etc.) or with external tools (Tableau, Looker, etc.).
Modify the App.config file in the project to add a reference to the Dynamics CRM Entity Framework 6 assembly and the connection string.
The connection string options meet the authentication and connection requirements of different Dynamics CRM instances. To connect to your instance, set the User and Password properties, under the Authentication section, to valid Dynamics CRM user credentials and set the Url to a valid Dynamics CRM server organization root. Additionally, set the CRMVersion property to 'CRM2011+' or 'CRMOnline'. IFD configurations are supported as well; set InternetFacingDeployment to true.
Additionally, you can provide the security token service (STS) or AD FS endpoint in the STSURL property. This value can be retrieved with the GetSTSUrl stored procedure. Office 365 users can connect to the default STS URL by simply setting CRMVersion.
<configuration> ... <connectionStrings> <add name="DynamicsCRMContext" connectionString="Offline=False;User=myuseraccount;Password=mypassword;URL=https://myOrg.crm.dynamics.com/;CRM Version=CRM Online;" providerName="System.Data.CData.DynamicsCRM" /> </connectionStrings> <entityFramework> <providers> ... <provider invariantName="System.Data.CData.DynamicsCRM" type="System.Data.CData.DynamicsCRM.DynamicsCRMProviderServices, System.Data.CData.DynamicsCRM.Entities.EF6" /> </providers> <entityFramework> </configuration> </code>
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Data.Entity.ModelConfiguration.Conventions;
class DynamicsCRMContext : DbContext {
public DynamicsCRMContext() { }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// To remove the requests to the Migration History table
Database.SetInitializer<DynamicsCRMContext>(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("Account")]
public class Account {
[System.ComponentModel.DataAnnotations.Key]
public System.String FirstName { get; set; }
public System.String NumberOfEmployees { get; set; }
}
public DbSet<Account> Account { set; get; }
DynamicsCRMContext context = new DynamicsCRMContext(); context.Configuration.UseDatabaseNullSemantics = true; var query = from line in context.Account select line;
Download a free trial of the Dynamics CRM Data Provider to get started:
Download NowLearn more:
👁 Dynamics CRM IconRapidly create and deploy powerful .NET applications that integrate with Microsoft Dynamics CRM account data including Leads, Contacts, Opportunities, Accounts, and more!