Laden...

Entity Framework: Sql abfrage auf Daten

Erstellt von Da_Flo vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.581 Views
D
Da_Flo Themenstarter:in
269 Beiträge seit 2009
vor 12 Jahren
Entity Framework: Sql abfrage auf Daten

Hallo!

Ich habe bei ObjectContext folgende Methode angewandt:


var result = obj.ExecuteStoreQuery<T>(@"SELECT 
                          *
                          FROM "+sqlTabellenname);

nun führt er diese Abfrage allerdings direkt auf die Datenbank aus, kann ich auch Irgendwie ein textuelles Statement direkt auf die Daten die gerade zur verfügung stehen ausführen?

Danke
Flo

1.552 Beiträge seit 2010
vor 12 Jahren

Hallo Da_Flo,

[Artikelserie] Parameter von SQL Befehlen
Wenn du schon EF verwendest warum verwendest du kein LINQ?
var result = obj.Tabellenname.
var restul = obj.Tabellenname.Where(t=>t.irgendwas = "blablabla)

Gruß
Michael

Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp

D
Da_Flo Themenstarter:in
269 Beiträge seit 2009
vor 12 Jahren

Ich hab in dieser Klasse nur den ObjectContext zur verfügung, da das ganze dynamisch sein soll. Wie du ja auch schon in dem Sqlstatement sieht greift er da auf eine Tabelle zu die über ein Propertiy gesetzt wurden. Also nicht immer auf die Selbe Tabelle.

1.552 Beiträge seit 2010
vor 12 Jahren

Aber m.E. ist dies etwas umständlich.
Wenn du dies in eine Methde auslagerst sieht dies so aus:



public IEnumerable<T> GetResult<T>(string sqlTabellenname)
{
    return obj.ExecuteStoreQuery<T>(@"SELECT  * FROM "+sqlTabellenname);
}

Aufruf mit:
GetResult<MyTableType>("MyTableType");
dies ist sehr Fehleranfällig, da ja auch hier nicht garantiert wird dass sqlTabellenname in der Datenbank exisitert. Wenn du schon das EF verwendest, dann benutze auch dessen Features und Vorteile.

Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp

D
Da_Flo Themenstarter:in
269 Beiträge seit 2009
vor 12 Jahren

Mir fällt leider keine andere Möglichkeit ein.

Meine Situation ist folgende:

Ich habe ein DataGrid
welches ich im "Projekt A" folgendermaßen mit Daten fülle:


mitarbeiterDataGrid.ItemsSource = ent.Mitarbeiter;

jetzt hab ich eine Klasse geschrieben DataGridFilter welches die DataGrid um eine Funktionalität erweitern soll und eine Gui Bereitstellt woman Filter definieren kann(z.B Vorname="abc")

dies mache ich folgendermasen:


DataGridFilter<Mitarbeiter> filter = new DataGridFilter<Mitarbeiter>(this,mitarbeiterDataGrid, ent, "Mitarbeiter");

Diese Klasse DataGridfilter liegt allerdings in einem einer anderen library also kennt dies Klasse den DataContext den ich oben zum befüllen der Datagrid verwendet habe nicht.

Die Filter funktionalität löse ich durch SQL Abfragen mit where klauseln.
dies mache ich halt über die im ersten Posting verwendete Methode.

Ich habe leider keine andere Möglichkeit gefunden um Daten in einem DataGrid zu filtern.

16.842 Beiträge seit 2008
vor 12 Jahren

Kurz und knapp: dann würde ich was an Deinem Code/Klassen/Projekt-Design ändern.
Eigenes Projekt für Entities, eigenes für Datenbankabfrage, eigenes für Entity-Extensions..

Aber es gibt keinen Grund, SQL-Strings im EF selbst zu bauen.