linq-to-entities

___ qstnhdr ___ Linq SqlMethods.Like schlägt fehl ___ answer2585564 ___

Ich weiß nicht, wie Sie Entity Framework dazu bringen können, den "echten" LIKE-Operator zu verwenden, aber eine mögliche Lösung wäre, einen LIKE-Ausdruck in %code% , %code% und %code%

Zum Beispiel:

%Vor%

Und so weiter ...

Beachten Sie, dass dies nicht genau äquivalent zur Verwendung von LIKE in SQL ist: zum Beispiel würde %code% zu %code% führen. Dies würde "abcd" entsprechen, obwohl die ursprüngliche LIKE-Bedingung nicht. Aber in den meisten Fällen sollte es gut genug sein.

Hier ist eine Beispielimplementierung, die %code% und LinqKit , um Ausdrücke basierend auf einem LIKE-Muster zu erstellen:

%Vor%

Und hier ist, wie Sie es verwenden könnten:

%Vor%

Ich habe es gerade mit einem einfachen EF-Modell versucht, und es scheint gut zu funktionieren:)

    
___ answer31424379 ___

Sie können ein echtes Like in Link zu Entitäten verwenden

Hinzufügen

%Vor%

zu Ihrem EDMX in diesem Tag:

  

edmx: Edmx / edmx: Laufzeit / edmx: ConceptualModels / Schema

Merken Sie sich auch den Namensraum im Attribut %code%

Fügen Sie dann im obigen Namespace eine Erweiterungsklasse hinzu:

%Vor%

Diese Erweiterungsmethode wird nun der EDMX-Funktion zugeordnet.

Weitere Informationen hier: Ссылка

    
___ tag123net ___ Das .NET-Framework ist ein Software-Framework, das hauptsächlich für das Microsoft Windows-Betriebssystem entwickelt wurde. Es enthält eine Implementierung der Basisklassenbibliothek, Common Language Runtime (allgemein als CLR bezeichnet), Common Type System (allgemein als CTS bezeichnet) und Dynamic Language Runtime. Es unterstützt viele Programmiersprachen, einschließlich C #, VB.NET, F # und C ++ / CLI. NICHT für Fragen zu .NET Core verwenden. ___ answer2585443 ___

Die %code% -Klasse soll gemeint sein Wird mit LINQ-to-SQL verwendet. Wenn Sie Methoden von ihm verwenden (die die öffentliche Dokumentation Ihnen sagt, dass Sie nicht tun sollen, ist es nicht für den öffentlichen Verbrauch), die %code% Provider für LINQ-to-Entities weiß nicht, was damit zu tun ist oder wie man es übersetzt.

Wenn Sie am Anfang oder Ende des Filters einen einzelnen Platzhalter hätten, könnten Sie %code% oder %code% Methoden auf der %code% class und LINQ-to-Entities unterstützen dies.

In diesem Fall haben Sie jedoch eine variable Anzahl von Platzhaltern. Daher müssen Sie auf die ESQL-Ebene herunterblättern und daraus eine Abfrage erstellen, wie in Nix 'Antwort .

    
___ tag123linqtoetities ___ Dieses Tag steht für Fragen zu LINQ to Entities, dh LINQ-Abfragen, die das ADO.NET Entity Framework verwenden. Beachten Sie, dass sich dies von LINQ to SQL oder anderen LINQ-Anbietern unterscheidet. ___ qstntxt ___

Ich befolge die Tipps hier versuchen, die Aussage zu nutzen, dass die SQL nicht erstellt wird, bis der Enumerator ausgelöst wird. Allerdings bekomme ich den folgenden Fehler auf den Code unten. Ich verwende Linq2Entities, nicht linq2sql. Gibt es eine Möglichkeit, dies in Linq2entities zu tun?

Methode 'Boolean Like (System.String, System.String)' kann nicht auf dem Client verwendet werden; Es ist nur für die Übersetzung in SQL.

%Vor%

Hinweise: db ist eine Entitätszuordnung zu einem SQL-Server.

    
___ answer2584891 ___

Sie könnten ESQL machen und so etwas wie das Folgende tun.

%Vor%     
___
2
Antworten

Entity Framework - Wählen Sie distinct in

Ich habe eine Tabelle namens Tag mit einer Spalte namens Label und einer Spalte namens AuctionId. Ich habe auch eine Reihe von Strings, die Suchbegriffe sind. Ich möchte einen Linq to Entities-Code schreiben, der mir eine eindeutige Liste von Au...
17.02.2012, 11:32
2
Antworten

Sequenz enthält mehr als ein Element - SingleOrDefault ist nicht hilfreich

Ich habe die folgende Zeile, bekomme aber immer noch eine Ausnahme " Sequenz enthält mehr als ein Element " %Vor% Ich hatte gehofft, dass SingleOrDefault die Ausnahme vermeiden würde.     
27.03.2014, 15:06
4
Antworten

Linq SqlMethods.Like schlägt fehl

Ich befolge die Tipps hier versuchen, die Aussage zu nutzen, dass die SQL nicht erstellt wird, bis der Enumerator ausgelöst wird. Allerdings bekomme ich den folgenden Fehler auf den Code unten. Ich verwende Linq2Entities, nicht linq2sql. Gibt...
06.04.2010, 12:02