2017-03-23 4 views
0

So einen Datensatz in einer Datenbank unter Verwendung von Entity Framework Ich habe versucht, habe ich versucht, diesen einfachen Code auf der Liste ArtikelEinfügen eines Datensatzes Entity Framework

TestEntities DB = new TestEntities(); 
List<Article> Articles = BD.Articles.ToList(); 
Articles.Add(new Article() { Id = 0, Category = "Category1", Title = "Title1"}); 
Articles.Add(new Article() { Id = 0, Category = "Category2", Title = "Title2" }); 
DB.SaveChanges(); 

Die Aufzeichnungen wurde hinzugefügt gut einfügen, aber nicht in die Datenbank kann jemand Bitte erklären Sie mir, wie das funktioniert.

+0

Sie fügen Artikel in die Artikelliste ein, nicht in Ihren Kontext. Versuchen Sie 'BD.Articles.Add (...)' stattdessen – haim770

Antwort

2

Articles ist nur eine In-Memory-Kopie der DbSet. Sie sollten die Elemente in die DbSet als auch hinzufügen, wenn man sie in die Datenbank in der Lage sein wollen, bestehen bleiben:

var art = new Article() { Id = 0, Category = "Category1", Title = "Title1"}; 
Articles.Add(art); 
BD.Articles.Add(art); 

Die List<Article> nicht „verbunden“ auf die DbSet, DbContext noch die Datenbank in keiner Weise.

+0

Fair genug, ich dachte, es wäre irgendwie eine Liste von Referenzen und Bearbeitung würde bedeuten, die db.Articles zu bearbeiten. – Const

0
using(TestEntities DB = new TestEntities()) 
{ 
    BD.Articles.Add(new Article() { Id = 0, Category = "Category1", Title = "Title1"}); 
    BD.Articles.Add(new Article() { Id = 0, Category = "Category2", Title = "Title2" }); 
    DB.SaveChanges(); 
} 
  1. Fügen Sie den neuen Artikel der DbSet, nicht die abgerufene Liste, die nur eine in Speicherdarstellung ist.
  2. Umschließen Sie immer Ihre Typen, die IDisposable in using-Anweisungen implementieren. In diesem Fall wird sichergestellt, dass die Datenbankverbindung geschlossen wird, wenn der Code existiert.
Verwandte Themen