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
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
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.
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.
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.
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.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code