LinQ Refresh-Problem

23/04/2008 - 12:00 von Dietmar | Report spam
Hallo,

ich weiss nicht, ob ich hier in der richtigen Newsgroup bin, konnte
keine LinQ-spezifische finden...

Ich verwende LinQ-To-SQL und mein Problem dabei ist, dass ich mein
"myDataContext"-Objekt nicht aktualisieren kann.
Wenn ich selbst Objekte (Entities) einfüge ist es kein Problem, nach
.SubmitChanges() werden sie korrekt in die DB (MS SQl-Server 2005)
geschrieben.
Da meine Applikation natürlich auch von anderen Benutzern gestartet
werden kann, sollten diese neuen Daten nach einem Klick auf einen
Refresh-Button angezeigt werden.
Das funktioniert allerdings nicht, selbst wenn ich
"myDataContext.Refresh(RefreshMode.OverwriteCurrentValues,
myDataContext.TableX)" aufrufe, werden die Daten, die ich danach lese,
nicht neu von der Datenbank abgeholt sondern weiterhin die zuvor bereits
lokal abgelegten angezeigt.
Wie kann ich meinen DatenContext dazu bringen, aktuelle Daten aus der DB
zu lesen?


Vielen Dank im Voraus,

Dietmar
 

Lesen sie die antworten

#1 Frank Dzaebel
23/04/2008 - 21:19 | Warnen spam
Hallo Dietmar,

ich weiss nicht, ob ich hier in der richtigen Newsgroup bin, konnte keine
LinQ-spezifische finden...



schon ok, manchmal besser in der Datenbank Gruppe.


Da meine Applikation natürlich auch von anderen Benutzern gestartet werden
kann, sollten diese neuen Daten nach einem Klick auf einen Refresh-Button
angezeigt werden.
Das funktioniert allerdings nicht, selbst wenn ich
"myDataContext.Refresh(RefreshMode.OverwriteCurrentValues,
myDataContext.TableX)" aufrufe, werden die Daten, die ich danach lese,
nicht neu von der Datenbank abgeholt sondern weiterhin die zuvor bereits
lokal abgelegten angezeigt.



Das ist aber genau richtig was Du machst, nur brauchst Du
die dann ja nicht zu lesen, sondern die sind ja durch das
Refresh schon neu in "myDataContext.TableX" gelesen.

In bestimmten Fàllen kann es notwendig sein,
über die LoadOptions des DataContext'es zu gehen, etwa bei
Master-Detail Beziehungen o.à..

Evtl. ist es auch einfach ein vergessenes "dataGridView1.Refresh();",
wobei es dann nur ein Anzeigeproblem gewesen wàre:

Properties.Settings Props = Properties.Settings.Default;
DbContextDataContext db;

private void Form1_Load(object sender, EventArgs e)
{
db = new DbContextDataContext(Props.AdventureWorksConnectionString);
var query = from emp in db.Employee select emp;
dataGridView1.DataSource = query;
}

private void btnNeuLaden_Click(object sender, EventArgs e)
{
db.Refresh(RefreshMode.OverwriteCurrentValues, db.Employee);
dataGridView1.Refresh(); // <<}


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen