Ich versuche, ein altes Projekt auf LINQ zu migrieren, aber ich habe ein ziemlich großes Problem festgestellt. Das Problem ist, dass wir dynamische Tabellen für die Suche Indizierung (CM-System mit dynamischen Attributen) haben. Der Suchindex enthält Spalten für jedes durchsuchbare Attribut {attribute_x, attribute_y, ...}. Nun ist das Problem, ich kann nicht statisch definieren, welche Spalten verfügbar sind (oder sogar welche Tabelle zu verwenden, wie wir Suchindizes teilen), also brauche ich eine Möglichkeit, dies im laufenden Betrieb zu tun.Verwenden von LINQ to SQL mit dynamischen Tabellen
Ich habe versucht, dynamische Ausdrücke zu verwenden, aber sie benötigen immer noch einen Typ, um den Ausdruck zu erstellen, und ich konnte keinen gültigen Typ durch Reflektion generieren. (Es scheint, dass keine MemberInfo generiert wird).
Ich könnte auch befriedigen mit nur in der Lage, einen Ausdruck für die Suche zu generieren (aber ich denke, das ist keine leichtere Aufgabe). Etwas in den Linien von
var mySearchIndex= db.GetTable(myTableType); var query = from p in db.Products from idx in mySearchIndex; query = query.Where( "idx." + attributeName + " > 50.0 && idx." + attributeName + "
wäre wünschenswert.
Hat jemand eine Lösung für dieses Problem gefunden? Ich habe die letzten zwei Tage in Blogposts und Foren vergeblich gesucht.
Linq to Dataset sieht tatsächlich sehr interessant aus, aber soweit ich verstehe, kombiniert es nicht die Abfragen, sondern verarbeitet die Information Client-Seite? Dies würde erhebliche Auswirkungen auf die Leistung haben. Oder irre ich mich damit und es kombiniert tatsächlich die Abfragen? –
Eine Idee, die ich hatte, war, wenn es irgendwie möglich ist, sql in ein Expression-Objekt zu injizieren, so dass ich einen Ausdruck injizieren konnte, wie er existiert (wähle 1 aus SearchIndex ...), aber ich konnte keinen Weg finden. –
Sie haben Recht. Es behandelt die Prozesse auf der Client-Seite. – Keltex