ユーザーがさまざまな列で独自のテーブルを作成できるようにするサードパーティのアプリケーションを使用しています。各テーブルは「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 要求を行わずにインデックス列を取得する他の方法はありますか?