テーブル名は静的ではなく、コンパイル時にわかっているため、実行時にSQLCeデータベースにテーブルを追加したいとします。 私は次のようにEntity Frameworkの4.1とDbContextでこれをやろう:C#EF 4.1 DbContext内でテーブルを動的に作成する
public class PersonContext : DbContext
{
public PersonContext()
: base("UnicornsCEDatabase")
{
}
}
public class Person
{
public int NameId { get; set; }
public string Name { get; set; }
}
public class Program
{
static void Main(string[] args)
{
using (var db = new PersonContext())
{
db.Database.Delete();
//Try to create table
DbSet per = db.Set<Person>();
var per1 = new Person { NameId = 1, Name = "James"};
per.Add(per1);
int recordsAffected = db.SaveChanges();
Console.WriteLine(
"Saved {0} entities to the database, press any key to exit.",
recordsAffected);
Console.ReadKey();
}
}
}
それがこのエラーをスローし、これを実行しようとすると: エンティティタイプの人は、現在のコンテキストのためのモデルの一部ではありません。
をDbContext(スキーマ付き)をデータベースに定義することなく、実行時にDbContextをに追加することはできますか?
Personで静的にDbContextを定義する場合、EFはデータベース全体とそのテーブルを作成します。これは素晴らしい方法です。例えば
:
foreach (var item in collection)
{
string tableName = "PersonTable_"+item.Name;
//Add a table with the name tableName to DbContext
}
はEFと、この何とか可能ですか私はいくつかの他の技術を用いてこれらを作成する必要がありますか?モデルは
Database.SetInitializer<DataContext>(
new DropCreateDatabaseIfModelChanges<DataContext>());
かを変更したとき、それはデシベルをドロップするので、あなたが次のように使用することができ
おかげで、ユルゲン
この問題は解決しましたか? –