各製品の資料を入手。
詳細はこちら →CData
こんにちは!ウェブ担当の加藤です。マーケ関連のデータ分析や整備もやっています。
Entity Framework はobject-relational mapping フレームワークで、データをオブジェクトとして扱うために使われます。Visual Studio のADO.NET Entity Data Model ウィザードを実行するとEntity Model を作成できますが、このモデルファーストアプローチでは、データソースに変更があった場合やエンティティ操作をより制御したい場合は不都合があります。この記事では、CData ADO.NET Provider を使いコードファーストアプローチでAlloyDB にアクセスします。
AlloyDB に接続するには、次の接続プロパティが必要です。
標準認証で接続する場合は、これ以上のアクションは必要ありません。
CData 製品がサポートしている他の認証方法では、AlloyDB サーバー上のpg_hba.conf ファイルで有効化する必要があります。
AlloyDB サーバーでの認証の設定については、こちらを参照してください。
MD5
pg_hba.conf ファイルのauth-method をmd5 に設定すると、MD5 パスワード検証を使用して認証できます。
SASL
CData 製品は、SASL(特にSCRAM-SHA-256)でパスワードを検証することで認証できます。
この認証方法を使用するには、pg_hba.conf ファイルのauth-method をscram-sha-256 に設定します。
Kerberos 認証は、CData 製品が接続を試行している際にAlloyDB サーバーで開始されます。この認証方法を有効化するには、AlloyDB
サーバーでKerberos を設定します。AlloyDB サーバーでのKerberos 認証の設定を完了したら、CData 製品からKerberos
認証を行う方法については、ヘルプドキュメントの「Kerberos
の使用」セクションを参照してください。
<configuration>
... <connectionStrings>
<add name="AlloyDBContext" connectionString="Offline=False;User=alloydb;Password=admin;Database=alloydb;Server=127.0.0.1;Port=5432" providerName="System.Data.CData.AlloyDB" />
</connectionStrings>
<entityFramework>
<providers>
... <provider invariantName="System.Data.CData.AlloyDB" type="System.Data.CData.AlloyDB.AlloyDBProviderServices, System.Data.CData.AlloyDB.Entities.EF6" />
</providers>
<entityFramework>
</configuration>
</code>
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Data.Entity.ModelConfiguration.Conventions;
class AlloyDBContext :DbContext {
public AlloyDBContext() { }
protected override void OnModelCreating(DbModelBuilder modelBuilder) { // To remove the requests to the Migration History table
Database.SetInitializer<AlloyDBContext>(null); // To remove the plural names modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
using System.Data.Entity.ModelConfiguration;
using System.ComponentModel.DataAnnotations.Schema;
public class Orders {
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public System.String Id { get; set; }
public System.String ShipName { get; set; }
}
public class OrdersMap :EntityTypeConfiguration<Orders> {
public OrdersMap() {
this.ToTable("Orders");
this.HasKey(Orders => Orders.Id);
this.Property(Orders => Orders.ShipName);
}
}
public DbSet<Orders> Orders { set; get; }
AlloyDBContext context = new AlloyDBContext();
context.Configuration.UseDatabaseNullSemantics = true;
var query = from line in context.Orders select line;