Ready to get started?

Learn more about the CData ADO.NET Provider for Sage 50 UK or download a free trial:

Download Now

Entity Framework 6 からSage 50 UK Data にアクセス

この記事は、Entity Framework のcode-first アプローチを使って、Sage 50 UK data に接続する方法を説明します。Entity Framework 6 は.NET 4.5 以上で利用可能です。



Entity Framework はobject-relational mapping フレームワークで、データをオブジェクトとして扱うために使われます。Visual Studio のADO.NET Entity Data Model ウィザードを実行するとEntity Model を作成できますが、このモデルファーストアプローチでは、データソースに変更があった場合やエンティティ操作をより制御したい場合は不都合があります。この記事では、CData ADO.NET Provider を使いコードファーストアプローチでSage 50 UK data にアクセスします。

  1. Visual Studio を起動し、新しいWindows Form アプリケーションを作成します。ここでは、.NET 4.5 のC# プロジェクトを使います。
  2. Visual Studio の [パッケージ マネージャー コンソール]から'Install-Package EntityFramework' コマンドを実行し、最新のEntity Framework をインストールします。
  3. プロジェクトのApp.config ファイルを修正して、Sage 50 UK Entity Framework 6 アセンブリおよびコネクションストリングへの参照を追加します。

    Note: Only Sage 50 UK 2012 and above are supported.

    The User and Password properties, under the Connection section, must be set to valid Sage 50 UK user credentials. These values will be the same used to log in to the Sage 50 UK software.

    Additionally, the URL property, under the Connection section, will need to be set to the address of the company dataset desired. To obtain the address, do the following:

    1. If you have not already done so, open the Sage 50 UK software.
    2. Click Tools -> Internet Options.
    3. Select the SData Settings tab.
    4. Click the Details button next to Sage 50 Accounts. A window is displayed containing a list of company names along with the address to their corresponding datasets.
    5. Set the URL property to the value in the address field next to the company desired.
    <configuration> ... <connectionStrings> <add name="Sage50UKContext" connectionString="Offline=False;URL=http://your-server:5493/sdata/accounts50/GCRM/your-address;User=Manager;" providerName="System.Data.CData.Sage50UK" /> </connectionStrings> <entityFramework> <providers> ... <provider invariantName="System.Data.CData.Sage50UK" type="System.Data.CData.Sage50UK.Sage50UKProviderServices, System.Data.CData.Sage50UK.Entities.EF6" /> </providers> <entityFramework> </configuration> </code>
  4. インストールディレクトリの[lib] > 4.0 サブフォルダにあるSystem.Data.CData.Sage50UK.Entities.EF6.dll を設定し、プロジェクトを作成してEntity Framework 6 を使うためのセットアップを完了します。
  5. この時点でプロジェクトを作成し、すべてが正しく動作していることを確認してください。これで、Entity Framework を使ってコーディングを開始できます。
  6. プロジェクトに新しい.cs ファイルを追加し、そこにクラスを追加します。これがデータベースのコンテキストとなり、DbContext クラスを拡張します。この例では、クラス名はSage50UKContext です。以下のサンプルコードは、OnModelCreating メソッドをオーバーライドして次の変更を加えます:
    • PluralizingTableNameConvention をModelBuilder Conventions から削除。
    • MigrationHistory テーブルへのリクエストを削除。
    using System.Data.Entity; using System.Data.Entity.Infrastructure; using System.Data.Entity.ModelConfiguration.Conventions; class Sage50UKContext :DbContext { public Sage50UKContext() { } protected override void OnModelCreating(DbModelBuilder modelBuilder) { // To remove the requests to the Migration History table Database.SetInitializer<Sage50UKContext>(null); // To remove the plural names modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); } }
  7. もう一つ.cs ファイルを作成し、ファイル名を呼び出そうとしているSage 50 UK のエンティティ、例えばTradingAccounts にします。このファイルでは、エンティティとエンティティ設定の両方を定義します。以下に例を示します。 using System.Data.Entity.ModelConfiguration; using System.ComponentModel.DataAnnotations.Schema; public class TradingAccounts { [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] public System.String Id { get; set; } public System.String Name { get; set; } } public class TradingAccountsMap :EntityTypeConfiguration<TradingAccounts> { public TradingAccountsMap() { this.ToTable("TradingAccounts"); this.HasKey(TradingAccounts => TradingAccounts.Id); this.Property(TradingAccounts => TradingAccounts.Name); } }
  8. エンティティの作成が済んだので、コンテキストクラスにエンティティを追加します: public DbSet<TradingAccounts> TradingAccounts { set; get; }
  9. コンテキストとエンティティの作成が完了したら、別クラスでデータをクエリできます。例: Sage50UKContext context = new Sage50UKContext(); context.Configuration.UseDatabaseNullSemantics = true; var query = from line in context.TradingAccounts select line;
 
 
ダウンロード