ノーコードでクラウド上のデータとの連携を実現。
詳細はこちら →CData
こんにちは!ウェブ担当の加藤です。マーケ関連のデータ分析や整備もやっています。
Entity Framework はobject-relational mapping フレームワークで、データをオブジェクトとして扱うために使われます。Visual Studio のADO.NET Entity Data Model ウィザードを実行するとEntity Model を作成できますが、このモデルファーストアプローチでは、データソースに変更があった場合やエンティティ操作をより制御したい場合は不都合があります。この記事では、CData ADO.NET Provider を使いコードファーストアプローチでIBM Cloud Object Storage にアクセスします。
Cloud Object Storage に接続する前に、Cloud Object Storage インスタンスを登録してCloud Object Storage API キーとCRN を取得していきます。
IBM Cloud アカウントにCloud Object Storage がまだない場合は、以下の手順に従ってアカウントにSQL Query のインスタンスをインストールできます。
API キーは以下の手順で取得できます。
デフォルトでは、CData 製品はCloud Object Storage CRN を自動で取得します。ただし、複数のアカウントがある場合は、CloudObjectStorageCRN を明示的に指定する必要があります。この値は、次の2つの方法で取得できます。
これで準備は完了です。以下の接続プロパティを設定してください。
プロパティを設定したら、これで接続設定は完了です。
<configuration>
... <connectionStrings>
<add name="IBMCloudObjectStorageContext" connectionString="Offline=False;ApiKey=myApiKey;CloudObjectStorageCRN=MyInstanceCRN;Region=myRegion;OAuthClientId=MyOAuthClientId;OAuthClientSecret=myOAuthClientSecret;" providerName="System.Data.CData.IBMCloudObjectStorage" />
</connectionStrings>
<entityFramework>
<providers>
... <provider invariantName="System.Data.CData.IBMCloudObjectStorage" type="System.Data.CData.IBMCloudObjectStorage.IBMCloudObjectStorageProviderServices, System.Data.CData.IBMCloudObjectStorage.Entities.EF6" />
</providers>
<entityFramework>
</configuration>
</code>
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Data.Entity.ModelConfiguration.Conventions;
class IBMCloudObjectStorageContext :DbContext {
public IBMCloudObjectStorageContext() { }
protected override void OnModelCreating(DbModelBuilder modelBuilder) { // To remove the requests to the Migration History table
Database.SetInitializer<IBMCloudObjectStorageContext>(null); // To remove the plural names modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
using System.Data.Entity.ModelConfiguration;
using System.ComponentModel.DataAnnotations.Schema;
public class Objects {
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public System.String Id { get; set; }
public System.String Key { get; set; }
}
public class ObjectsMap :EntityTypeConfiguration<Objects> {
public ObjectsMap() {
this.ToTable("Objects");
this.HasKey(Objects => Objects.Id);
this.Property(Objects => Objects.Key);
}
}
public DbSet<Objects> Objects { set; get; }
IBMCloudObjectStorageContext context = new IBMCloudObjectStorageContext();
context.Configuration.UseDatabaseNullSemantics = true;
var query = from line in context.Objects select line;