C# EF 4.1 Tabelle Erstellen, die dynamisch innerhalb DbContext

Ich will hinzufügen von Tabellen zu einer SQLCe-Datenbank zur Laufzeit, da die tablenames sind nicht statisch und zum Zeitpunkt der Kompilierung bekannt.
Ich versuche dies mit Entity Framework 4.1 und DbContext wie folgt:

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();
        }
    }
}

Beim ausführen dieses es wirft diese Fehlermeldung:
Der entity-Typ Person ist nicht Teil des Modells für den aktuellen Kontext.

Ist es möglich, fügen Sie ein DbSet zur Laufzeit der DbContext ohne zu definieren, die DbSet(mit seinen schema) in der Datenbank?

Beim definieren der DbContext statisch mit der Person, EF wird Sie die gesamte Datenbank und die Tabellen, auf die fliege, die ist toll.

Beispiel:

foreach (var item in collection)
{
   string tableName = "PersonTable_"+item.Name;
   //Add a table with the name tableName to DbContext
}

Ist das irgendwie möglich mit EF oder muss ich die erstellen, diese mit einigen anderen Technik?

Dank, Jürgen

haben Sie dieses problem gelöst?

InformationsquelleAutor Juergen | 2011-11-15

Schreibe einen Kommentar