2014-03-28 6 views
8

Ich habe Probleme mit diesem Code. Ich bin in der Lage, eine Verbindung zu einem MDF-Beispiel-Datenbank-Archiv herzustellen und das Entitätsmodell zu generieren. Obwohl ich in der Lage bin, das Kontextmodell abzufragen und Informationen aus der Datenbank abzurufen, wenn ich versuche, irgendetwas im Kontext zu aktualisieren, zu löschen oder einzufügen und die Änderungen in den DB Context zu übersetzen. SaveChanges funktioniert nicht. Es gibt keine Ausnahme, das Entitätsmodell wird ordnungsgemäß aktualisiert, aber die DB hat die Änderung nicht. Vielen Dank im HinblickEntity-Framework Context.SaveChanges funktioniert überhaupt nicht

public void addCourse(int courseId, int deptId, string courseTitle) 
{  
SchoolContexto = new SchoolEntities();    

Course mycourse= new Course(); 
mycourse.CourseID = courseId; 
mycourse.Credits = 10; 
mycourse.DepartmentID = deptId; 
mycourse.Title = courseTitle; 
SchoolContexto.Courses.Add(mycourse);    

SchoolContexto.SaveChanges(); 
SchoolContexto.Dispose(); 
} 
+1

Ich hatte ein ähnliches Problem, das erste Mal, dass ich Entity Framework. In der Tat habe ich nicht die richtige db gesehen. Ich hatte eine alte und Entity Framework erstellt eine andere. Keine Antwort, nur um Informationen hinzuzufügen. – AMS

+1

Ok, basierend darauf habe ich das Problem gefunden !!! Wenn ich die Verbindung zur Datenbank erstellt habe, um das Modell zu erstellen, bietet VS die Möglichkeit, die .mdf-Datei in die Lösung aufzunehmen und die Verbindungszeichenfolge zu ändern. Tu das nicht !!! es ist eine Sprengfalle !! XD Als ich erneut versuchte, das Modell zu generieren, entschied ich mich, die Datenbank nicht in die Lösung aufzunehmen, und jetzt funktioniert alles einwandfrei. Danke Budies !!! – user3471933

Antwort

2

Ich schlage vor, Sie diesen Code verwenden:

public void addCourse(int courseId, int deptId, string courseTitle) 
{  
    SchoolEntities entities = new SchoolEntities();    

    Course mycourse= new Course(); 
    mycourse.CourseID = courseId; 
    mycourse.Credits = 10; 
    mycourse.DepartmentID = deptId; 
    mycourse.Title = courseTitle; 
    entities.Courses.Add(mycourse);    

    entities.SaveChanges(); 

} 

wenn dies nicht funktioniert, ich Ihnen vorschlagen, Ihre app.config-Datei zu überprüfen :)

+0

Entschuldigung, mein Fehler beim Kopieren des Codes. In der Tat ist der SchoolContexto früh im Code deklariert (Ich habe schon versucht, es in der Funktion zu definieren, wie Sie, aber auch nicht funktioniert. :( – user3471933

+0

Dies ist meine Verbindungszeichenfolge user3471933

+0

und Das ist meine EF-Factory user3471933

1

Eine weitere Möglichkeit, Fügen Sie dem Kontext eine neue Entität hinzu, um seinen Status in "Hinzugefügt" zu ändern. Haben Sie versucht, diese

using (var entities = new SchoolEntities()) 
{ 
    Course mycourse= new Course(); 
    mycourse.CourseID = courseId; 
    mycourse.Credits = 10; 
    mycourse.DepartmentID = deptId; 
    mycourse.Title = courseTitle; 
    context.Entry(mycourse).State = EntityState.Added; 
    entities.SaveChanges(); 
} 
+0

Es funktioniert auch nicht ... das macht mich verrückt, jejeje. Ich verstehe nicht, wo das Problem ist ... es ist nur eine Beispiellösung, die ich aus einem Tutorial erstelle. Ich hatte gerade das proyect, das Model erstellt, Entitäten von DB angefordert (das hat funktioniert) und diesen Code versucht. Es gibt keinen komplexeren Prozess in der Lösung. ainggg Danke. – user3471933

+0

Was gibt SaveChanges() zurück?Es sollte die Anzahl der hinzugefügten Objekte zurückgeben –

0

ich das Problem, indem Sie die folgenden Namespace

using System.Data.SqlClient; 
6

Stellen Eigentum der MDF-Datei in Ihrer Lösung als kopieren Ausgabeverzeichnis gelöst: „Kopieren nur dann, wenn neuere“

Andernfalls wird Ihre db-Datei jedes Mal, es

0

läuft überschreiben ich denke, das Problem ist, dass Sie auf localdb (MDF-) Datei zu arbeiten. Ich hatte das gleiche Problem, aber wenn ich neu erstellt (SQL Server-Datenbankverbindung) Servername: (localdb) \ MSSqlLocaldb .... es funktionierte