Ich bin neu in Entity Framework mit Code-First.
Ich habe jetzt ein paar Dinge ausprobiert, aber ich kann EF nicht dazu bringen, Tabellen in meiner SQL Azure-Datenbank zu erstellen. Kann mir jemand einige Schritte und Einstellungen empfehlen, die ich überprüfen sollte.
Der Mitgliedsprovider hat keine Probleme damit, seine Tabellen zu erstellen.
Ich habe PersistSecurityInfo=True in der Verbindungszeichenfolge hinzugefügt. Die Verbindungszeichenfolge verwendet das Hauptbenutzerkonto für den Server.
Wenn ich die Tabellen in der Datenbank mit sql implementiere, funktioniert alles einwandfrei.
Ich habe folgendes in der WebRole.cs
//Initialisiere die Datenbank
Database.SetInitializer(new DbInitializer());
Mein DbInitializer (der sich nicht ausführt, bevor ich eine "Ungültige Objektname 'dbo.ClientAccountIFAs'." bekomme, wenn ich zum ersten Mal auf die Tabelle zugreife. Irgendwann nach dem Start.
public class DbInitializer:DropCreateDatabaseIfModelChanges
{
protected override void Seed(ReykerSCPContext context)
{
using (context)
{
//Füge Dokumententypen hinzu
context.DocTypes.Add(new DocType() { DocTypeId = 1, Description = "Erklärung" });
context.DocTypes.Add(new DocType() { DocTypeId = 2, Description = "Vertragsnote" });
context.DocTypes.Add(new DocType() { DocTypeId = 3, Description = "Benachrichtigung" });
context.DocTypes.Add(new DocType() { DocTypeId = 4, Description = "Rechnung" });
context.DocTypes.Add(new DocType() { DocTypeId = 5, Description = "Dokument" });
context.DocTypes.Add(new DocType() { DocTypeId = 6, Description = "Newsletter" });
context.DocTypes.Add(new DocType() { DocTypeId = 7, Description = "Geschäftsbedingungen" });
//Füge Reyker-Kontotypen hinzu
context.ReykerAccountTypes.Add(new ReykerAccountType() { ReykerAccountTypeID = 1, Description = "ISA" });
context.ReykerAccountTypes.Add(new ReykerAccountType() { ReykerAccountTypeID = 2, Description = "Handel" });
context.ReykerAccountTypes.Add(new ReykerAccountType() { ReykerAccountTypeID = 3, Description = "SIPP" });
context.ReykerAccountTypes.Add(new ReykerAccountType() { ReykerAccountTypeID = 4, Description = "CTF" });
context.ReykerAccountTypes.Add(new ReykerAccountType() { ReykerAccountTypeID = 5, Description = "JISA" });
context.ReykerAccountTypes.Add(new ReykerAccountType() { ReykerAccountTypeID = 6, Description = "Direkt" });
context.ReykerAccountTypes.Add(new ReykerAccountType() { ReykerAccountTypeID = 7, Description = "ISA & Direkt" });
//Speichere die Änderungen
base.Seed();
}
Und meine DBContext-Klasse sieht so aus
public class ReykerSCPContext : DbContext
{
//Verbindung explizit festlegen
public ReykerSCPContext():base("ReykerSCPContext"){}
//Tabellen definieren
public DbSet ClientAccountIFAs { get; set; }
public DbSet Documents { get; set; }
public DbSet DocTypes { get; set; }
public DbSet ReykerAccountTypes { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//Wird aufgerufen, wenn das Modell erstellt wird. Kann verwendet werden, um spezielle Beziehungen wie viele-zu-viele zu definieren.
}
Der Code, um auf die zuzugreifen, ist
public List GetAllClientAccountIFAs()
{
using (DataContext)
{
var caiCollection = from c in DataContext.ClientAccountIFAs
select c;
return caiCollection.ToList();
}
}
und es gibt einen Fehler in der letzten Zeile. Hilfe!