Wie kann ich linq2db mitteilen, wie ein gegebener Ausdruck, dh Split (char), in SQL übersetzt werden soll, wenn er nicht weiß, wie dies zu tun ist?

Ich benutzelinq2db und obwohl es für die meisten CRUD-Operationen gut genug funktioniert, habe ich viele Ausdrücke gefunden, die es einfach nicht in SQL übersetzen kann.

Es ist so weit gekommen, dass ich mir Sorgen mache, wenn ich nicht im Voraus genau weiß, um welche Art von Ausdrücken es sich handelt und sie zuvor erfolgreich aufgerufen hablinq2db wird durch die Kosten aufgewogen, die anfallen, wenn versucht wird, die beleidigenden Ausdrücke zu finden und dann zu entfernen (oder von der Serverseite zu entfernen).

Wenn ich wusste, wie man @ salinq2db wie man ein @ parExpression<Func<T,out T>> oder was nicht in SQL, wann immer es auf einer Ad-hoc-Basis benötigt wird, dann wäre ich viel sicherer und ich könnte viele Dinge mit diesem Tool tun.

Nimm zum Beispiel,String.Split(char separator), die Methode, die ein @ annimstring und einchar um ein @ zurückzugebstring[] jedes Teilstrings zwischen dem Trennzeichen.

Angenommen, mein TischEquipment hat ein nullbaresvarchar FeldUsages enthält Listen mit verschiedenen Gerätenutzungen, die durch Kommas getrennt sind.

Ich muss implementierenIList<string> GetUsages(string tenantCode, string needle = null) gibt eine Liste der Verwendungszwecke für einen bestimmten Mandantencode und eine optionale Suchzeichenfolge aus.

Meine Abfrage wäre dann so etwas wie:

var listOfListOfStringUsages =
    from et in MyConnection.GetTable<EquipmentTenant>()
    join e in MyConnection.GetTable<Equipment>() on et.EquipmentId = e.EquipmentId
    where (et.TenantCode == tenantCode)
    where (e.Usages != null)
    select e.Usages.Split(','); // cannot convert to sql here

var flattenedListOfStringUsages = 
    listOfListOfStringUsages.SelectMany(strsToAdd => strsToAdd)
                            .Select(str => str.Trim())
                            .Distinct();

var list = flattenedListOfStringUsages.ToList();

Es würde jedoch zur Laufzeit auf der durch comment angegebenen Linie explodieren.

Ich verstehe das totallinq2dbs kann nicht erwartet werden, dass die Ersteller von @ mit jeder Kombination von @ ausgeliefert werdestring Methode und Hauptdatenbankpaket.

Zur gleichen Zeit habe ich das Gefühl, als könnte ich sagen, wie ich damit umgehen soll, wenn ich nur ein Beispiel dafür sehen könnte (jemand, der einen benutzerdefinierten Ausdruck implementiert).

Also meine Frage ist:Wi muss ich @ anweislinq2db wie man ein @ parExpression dass es nicht aus der Box analysieren kann?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage