各製品の資料を入手。
詳細はこちら →CData
こんにちは!ウェブ担当の加藤です。マーケ関連のデータ分析や整備もやっています。
Entity Framework はobject-relational mapping フレームワークで、データをオブジェクトとして扱うために使われます。Visual Studio のADO.NET Entity Data Model ウィザードを実行するとEntity Model を作成できますが、このモデルファーストアプローチでは、データソースに変更があった場合やエンティティ操作をより制御したい場合は不都合があります。この記事では、CData ADO.NET Provider を使いコードファーストアプローチでSnapchat Ads にアクセスします。
Snapchat Ads はOAuth 認証のみサポートします。この認証を有効にするには、すべてのOAuth フローでAuthScheme をOAuth に設定し、カスタムOAuth アプリケーションを作成する必要があります。
定型のクエリを簡略化するために、AccountId にデフォルトのAccountId を指定するように設定することもできます。 これにより、WHERE 句の一部として手動で指定する必要がなくなります。(AccountId が指定されず、WHERE 句にアカウントID が明示的に与えられない場合、CData 製品はAccounts ビューに返されるリストから最初のアカウントを取得しようとします。)
ヘルプドキュメントでは、以下の3つの一般的な認証フローでのSnapchat Ads への認証について詳しく説明しています。
カスタムOAuth アプリケーションの作成については、ヘルプドキュメント の「カスタムOAuth アプリケーションの作成」セクションを参照してください。
<configuration>
... <connectionStrings>
<add name="SnapchatAdsContext" connectionString="Offline=False;" providerName="System.Data.CData.SnapchatAds" />
</connectionStrings>
<entityFramework>
<providers>
... <provider invariantName="System.Data.CData.SnapchatAds" type="System.Data.CData.SnapchatAds.SnapchatAdsProviderServices, System.Data.CData.SnapchatAds.Entities.EF6" />
</providers>
<entityFramework>
</configuration>
</code>
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Data.Entity.ModelConfiguration.Conventions;
class SnapchatAdsContext :DbContext {
public SnapchatAdsContext() { }
protected override void OnModelCreating(DbModelBuilder modelBuilder) { // To remove the requests to the Migration History table
Database.SetInitializer<SnapchatAdsContext>(null); // To remove the plural names modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
using System.Data.Entity.ModelConfiguration;
using System.ComponentModel.DataAnnotations.Schema;
public class Campaigns {
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public System.String Id { get; set; }
public System.String AccountId { get; set; }
}
public class CampaignsMap :EntityTypeConfiguration<Campaigns> {
public CampaignsMap() {
this.ToTable("Campaigns");
this.HasKey(Campaigns => Campaigns.Id);
this.Property(Campaigns => Campaigns.AccountId);
}
}
public DbSet<Campaigns> Campaigns { set; get; }
SnapchatAdsContext context = new SnapchatAdsContext();
context.Configuration.UseDatabaseNullSemantics = true;
var query = from line in context.Campaigns select line;