0

現在、レガシー データベースを使用するプロジェクトで EF5 を使用しています。レガシー アプリケーションは、動的に作成されるテーブル (xxxx_year、yyyy_year) を使用して、「年ベースのデータ」を格納します。year プロパティの値に基づいて、ef エンティティ (xxxx、yyyy など) をテーブルに動的にマップする方法を見つけようとしましたが、常に「コンテキストをサポートするモデルが変更されました。データベースが作成されました。」エラー。これを達成する方法について誰かが私にいくつかのアイデアを教えてもらえますか?

edm マッピングについて話している古いブログ記事をいくつか見つけました。ここでは、いくつかのプロパティ値 (水平分割の一種) に基づいてマッピング テーブルを分離できますが、最初にコードを使用して同じことを達成する方法についての指針が見つかりません。

ありがとう、P

4

1 に答える 1

0

各ドメイン オブジェクトのマッピング構成では、エンティティに対応するテーブル名がエンティティ名自体とは異なることを EF に伝えることができます。

クラスの名前が YyyyYear の場合、マッピング ファイルで名前を指定することにより、「2012_year」というテーブルを指すことができます。

例えば

// db テーブルごとに 1 つのエンティティ クラス
パブリック クラス YyyyYear
{
  public int ID { get; 設定; }
}

// エンティティ用の 1 つのマッピング ファイル
System.Data.Entity.ModelConfiguration の使用;
パブリック クラス YyyyYearMap: EntityTypeConfiguration
{
  public YyyyYearMap()
  {
    this.HasKey(t => t.Id);
    this.ToTable("2012_year");
  }
}

// データベース コンテキスト クラス (DbContext から派生)
System.Data.Entity の使用;
パブリック クラス MyDbContext: DbContext
{
  // エンティティ/テーブルごとに 1 db セット
  public DbSet YyyyYears { get; 設定; }

  protected override void OnModelCreating(DbModelBuilder modelBuilder)
  {
    // エンティティ/テーブルごとに 1 つのマッピング ファイル
    modelBuilder.Configurations.Add(新しい YyyyYearMap());
  }
}

それがあなたが探しているものかどうかはわかりませんが、段階的な手順、実際のサンプル、一般的な問題の解決方法を記載したブログ投稿があります。

http://wakeupandcode.com/entity-framework-code-first-migrations/

お役に立てれば!

于 2013-10-29T20:50:16.610 に答える