![]() |
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 Sage 300 data through the CData ADO.NET Provider, providing you with more flexibility and control.
Modify the App.config file in the project to add a reference to the Sage 300 Entity Framework 6 assembly and the connection string.
Sage 300 requires some initial setup in order to communicate over the Sage 300 Web API.
Authenticate to Sage 300 using Basic authentication.
You must provide values for the following properties to successfully authenticate to Sage 300. Note that the provider reuses the session opened by Sage 300 using cookies. This means that your credentials are used only on the first request to open the session. After that, cookies returned from Sage 300 are used for authentication.
<configuration> ... <connectionStrings> <add name="Sage300Context" connectionString="Offline=False;User=SAMPLE;Password=password;URL=http://127.0.0.1/Sage300WebApi/v1/-/;Company=SAMINC;" providerName="System.Data.CData.Sage300" /> </connectionStrings> <entityFramework> <providers> ... <provider invariantName="System.Data.CData.Sage300" type="System.Data.CData.Sage300.Sage300ProviderServices, System.Data.CData.Sage300.Entities.EF6" /> </providers> <entityFramework> </configuration> </code>
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Data.Entity.ModelConfiguration.Conventions;
class Sage300Context : DbContext {
public Sage300Context() { }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// To remove the requests to the Migration History table
Database.SetInitializer<Sage300Context>(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("OEInvoices")]
public class OEInvoices {
[System.ComponentModel.DataAnnotations.Key]
public System.String InvoiceUniquifier { get; set; }
public System.String ApprovedLimit { get; set; }
}
public DbSet<OEInvoices> OEInvoices { set; get; }
Sage300Context context = new Sage300Context(); context.Configuration.UseDatabaseNullSemantics = true; var query = from line in context.OEInvoices select line;
Download a free trial of the Sage 300 Data Provider to get started:
Download NowLearn more:
👁 Sage 300 IconRapidly create and deploy powerful .NET applications that integrate with Sage 300.