2

ユーザーがさまざまな列で独自のテーブルを作成できるようにするサードパーティのアプリケーションを使用しています。各テーブルは「T{ID}」の形式に従います (T12、T23 など)。

次のコードを使用して、適切なテーブルにアクセスしました。

public class RecordDataContext : System.Data.Entity.DbContext
{
  public RecordDataContext(string nameOrConnectionString, string tableName)
    : base(nameOrConnectionString)
  {
    if (string.IsNullOrEmpty(tableName))
      throw new ArgumentNullException("tableName");
    TableName = tableName;
  }

  public string TableName { get; private set; }

  public DbSet<Record> Records { get; set; }

  protected override void OnModelCreating(DbModelBuilder modelBuilder)
  {
    modelBuilder.Entity<Record>()
      .ToTable(TableName);
  }
}

各テーブルには同じ列があります (ID、CreateDateTime、ModifyDateTime など)。また、ユーザーが独自の列を追加することもできます。ユーザー フレンドリな列ヘッダーは他のテーブルに格納され、データ テーブルの列はこの形式 "Index{ID}" (Index20、Index35 など) に従います。

Entity Framework を使用して、インデックス列のデータが Data プロパティに格納されている次のような POCO モデルにデータを取り込めるようにしたいと考えています。

public class Record
{
  [Key]
  public int ID { get; set; }
  public DateTime CreateDateTime { get; set; }
  public DateTime ModifyDateTime { get; set; }
  public IDictionary<int, string> Data { get; set; }
}

これが不可能な場合、別の SQL 要求を行わずにインデックス列を取得する他の方法はありますか?

4

0 に答える 0