Я хочу добавить таблицы в базу данных SQLCe во время выполнения, поскольку имена таблиц не являются статичными и известны во время компиляции.Я пытаюсь сделать это с Entity Framework 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();
}
}
}
При попытке запустить это выдает эту ошибку: Тип сущности Person не является частью модели для текущего контекста.
Можно ли добавить DbSet во время выполнения к DbContext без необходимости определять этот DbSet (со своей схемой) в базе данных?
КогдаОпределяя DbContext статически с Person, EF создаст всю базу данных и таблицы на лету, и это здорово.
Например:
foreach (var item in collection)
{
string tableName = "PersonTable_"+item.Name;
//Add a table with the name tableName to DbContext
}
Возможно ли это с помощью EF или сделатьЯ должен создать их с другой техникой?
Спасибо, Юрген