Autor Beitrag
Christoph1972
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: Fr 06.12.13 10:56 
Hallo Leute,

ich habe eine Verständnisfrage zur Verwendung von Entitätscontainern. Und zwar werden diese in meinem Buch immer nur mittels using verwendet. Kann ich diese auch global in einer Klasse verwenden?

Also so:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
CPSequencerEntities gridContext = new CPSequencerEntities();

private void comboBoxSeq_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    string selection = comboBoxSeq.SelectedItem.ToString();
    var t = from data in gridContext.SequenceData
            where data.SequenceName == selection
            select data;

    dataGridSeqence.ItemsSource = t;
}

private void buttonSave_Click(object sender, RoutedEventArgs e)
{
    gridContext.SaveChanges();
}


Was spricht gegen mein Vorgehen? Die Connection sollte nach meinem Verständnis doch nicht dauerhaft geöffnet sein, da diese im Hintergrund bei der Mengenabfrage geöffnet/geschlossen wird.

Über Anregungen und Tipps freue ich mich wie immer sehr! :-)

_________________
Gruß
Christoph
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 06.12.13 12:20 
Du meinst einen ObjectContext keinen EntityContainer richtig?

Um die Connection brauchst du dir keine Sorgen machen das ist korrekt. Du solltest den Context solange verwahren wie du Objekte benutzt die vom Context getrackt werden. Sonst fliegen dir deine Navigational Properties um die Ohren wenn da versucht wird ~Lazy~ Daten aus der DB zu laden aber dein Context ist disposed. Zumindest wenn du Lazy Loading nicht abgeschaltet hast.

Trotzdem solltest du dafür sorgen das deine Klasse den Context sauber disposed wenn die Klasse der Verwalter des Contextes ist und ihn nicht nur benutzt. Wenn das die verwaltende Klasse ist würde ich die auch IDisposable implementieren lassen und den Context in dessen Dispose mit disposen.
Christoph1972 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: Fr 06.12.13 14:22 
user profile iconRalf Jansen hat folgendes geschrieben Zum zitierten Posting springen:
Du meinst einen ObjectContext keinen EntityContainer richtig?


OK, das meinte ich dann wohl. Ist noch alles Neuland für mich ;-)

Zitat:

Du solltest den Context solange verwahren wie du Objekte benutzt die vom Context getrackt werden. Sonst fliegen dir deine Navigational Properties um die Ohren wenn da versucht wird ~Lazy~ Daten aus der DB zu laden aber dein Context ist disposed. Zumindest wenn du Lazy Loading nicht abgeschaltet hast.


Genau das wollte ich hören, das gefällt mir sehr gut.


Zitat:

Trotzdem solltest du dafür sorgen das deine Klasse den Context sauber disposed wenn die Klasse der Verwalter des Contextes ist und ihn nicht nur benutzt. Wenn das die verwaltende Klasse ist würde ich die auch IDisposable implementieren lassen und den Context in dessen Dispose mit disposen.


Aktuell möchte ich es so strukturieren, dass der ObjectContext für die gesamte Programmlaufzeit bestehen bleibt.

Das ETF mit Linq und Databinding ist doch sehr praktisch, ich bin wirklich begeistert!

Vielen Dank für die Unterstützung!

_________________
Gruß
Christoph