ノーコードでクラウド上のデータとの連携を実現。
詳細はこちら →CData
こんにちは!ウェブ担当の加藤です。マーケ関連のデータ分析や整備もやっています。
Entity Framework はobject-relational mapping フレームワークで、データをオブジェクトとして扱うために使われます。Visual Studio のADO.NET Entity Data Model ウィザードを実行するとEntity Model を作成できますが、このモデルファーストアプローチでは、データソースに変更があった場合やエンティティ操作をより制御したい場合は不都合があります。この記事では、CData ADO.NET Provider を使いコードファーストアプローチでSybase にアクセスします。
Sybase は、Basic 認証、Kerberos 認証、LDAP 認証などの認証方法をいくつかサポートしています。
次を設定してデータを認証し接続します。User およびPassword を設定してSybaseIQ 認証を使用します。
オプションで、UseSSL をtrue に設定することにより、TLS/SSL で接続を保護できます。
Note: 上記のCData 製品 設定でSAP SQL Anywhere のインスタンスに接続することもできます。
Kerberos 認証を活用するには、次の接続プロパティを使用してそれを有効にすることから始めます。
Kerberos 認証用に設定する必要がある接続プロパティに関しては、Kerberos の使用 情報を参照してください。
以下は接続文字列の例です。
Server=MyServer;Port=MyPort;User=SampleUser;Password=SamplePassword;Database=MyDB;Kerberos=true;KerberosKDC=MyKDC;KerberosRealm=MYREALM.COM;KerberosSPN=server-name
LDAP 認証で接続するには、LDAP 認証メカニズムを使用するようにSybase サーバーサイドを設定する必要があります。
LDAP 用にSybase を設定したら、Basic 認証と同じクレデンシャルを使用して接続できます。
<configuration>
... <connectionStrings>
<add name="SybaseContext" connectionString="Offline=False;User=myuser;Password=mypassword;Server=localhost;Database=mydatabase;Charset=iso_1;" providerName="System.Data.CData.Sybase" />
</connectionStrings>
<entityFramework>
<providers>
... <provider invariantName="System.Data.CData.Sybase" type="System.Data.CData.Sybase.SybaseProviderServices, System.Data.CData.Sybase.Entities.EF6" />
</providers>
<entityFramework>
</configuration>
</code>
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Data.Entity.ModelConfiguration.Conventions;
class SybaseContext :DbContext {
public SybaseContext() { }
protected override void OnModelCreating(DbModelBuilder modelBuilder) { // To remove the requests to the Migration History table
Database.SetInitializer<SybaseContext>(null); // To remove the plural names modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
using System.Data.Entity.ModelConfiguration;
using System.ComponentModel.DataAnnotations.Schema;
public class Products {
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public System.String Id { get; set; }
public System.String Id { get; set; }
}
public class ProductsMap :EntityTypeConfiguration<Products> {
public ProductsMap() {
this.ToTable("Products");
this.HasKey(Products => Products.Id);
this.Property(Products => Products.Id);
}
}
public DbSet<Products> Products { set; get; }
SybaseContext context = new SybaseContext();
context.Configuration.UseDatabaseNullSemantics = true;
var query = from line in context.Products select line;