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
InformationsquelleAutor Juergen | 2011-11-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
könnten Sie folgende, würde es Tabellen erstellen oder aktualisieren Sie Sie als notwendig, nicht sicher, ob das funktionieren würde in der Produktion, da lässt es die db, wenn änderungen des Modells
oder wenn konnte, erstellen Sie Ihre eigene Implementierung des Systems.Daten.Entität.Interface IDatabaseInitializer
InformationsquelleAutor np-hard
Entity Framework unterstützt keine dynamischen Erstellung von Tabellen. Also, wenn Sie mithilfe von Code-Zuerst müssen Sie definieren Ihre DbSets in Ihrem DbContext, um zu erstellen entsprechende Tabellen.
http://entityframework.codeplex.com/discussions/448452
Gibt es einige Abhilfen gibt, wie diese Frage
Entity Framework (Code First) - Dynamisch ein Modell zu Bauen
Aber EF ist nicht das beste, ORM, versuchen ServiceStack.OrmLite (es ist ein leichtes, ORM).
InformationsquelleAutor Tourki
InformationsquelleAutor user3467452