Ich habe einige Probleme in meinem Projekt. Wenn ich versuche, Entity zu aktualisieren, gibt es mir verschiedene Arten von Fehlern.LINQ :: Verwenden Sie statischen DataContext, um Concurrency zu verhindern Problem
Ich lese aus dem Netz. Diese Fehler sind da
1 - Ich bin Gegenstand der Entity-Klasse von Verfahren erhalten, die Datacontext lokal
und in Update-Methode id wird lokal erstellt nicht aktualisiert werden, da hier eine andere Datacontext erstellt. (auch er wirft keine Ausnahme)
i für dieses Problem im Zusammenhang viele Artikel gefunden
1 - ein Hinzufügen von Timestamp-Spalte in der Tabelle (nicht bewirken in meinem Projekt ich dies versucht.)
Kerl sagte, dass SINGLE DataContext für alle verwenden.
i tat dies, indem Sie die folgende Klasse zu schaffen
public class Factory
{
private static LinqDemoDbDataContext db = null;
public static LinqDemoDbDataContext DB
{
get
{
if (db == null)
db = new LinqDemoDbDataContext();
return db;
}
}
}
public static Student GetStudent(long id)
{
LinqDemoDbDataContext db = Factory.DB;
//LinqDemoDbDataContext db = new LinqDemoDbDataContext();
Student std = (from s in db.Students
where s.ID == id
select s).Single();
return std;
}
public static void UpdateStudent(long studentId, string name, string address)
{
Student std = GetStudent(studentId);
LinqDemoDbDataContext db = Factory.DB;
std.Name = name;
std.Address = address;
db.SubmitChanges();
}
in diesem Fall i Student Details aktualisieren möchten.
es löste mein Problem. Aber jetzt ist die Frage.
Ist es eine gute Methode, über die Technik in Web-basierte Anwendung zu verwenden ???
+1 - Dieser Artikel auch einige der Gefahren und die Gründe beschrieben, warum nicht die „global“ Datacontext-Lösung zu verwenden: http://blog.codeville.net/2007/11/29/linq-zu-sql-the-multi-tier-story / –