diese einfache Abfrage Betrachten Sie die auf dem Keywords
Feld Volltextsuche verwenden:eine Volltextsuche Parameterübergabe mit Dapper.net
DECLARE @searchTerm VARCHAR(500) = 'painted'
SELECT * FROM StockCatalogueItems
WHERE (CONTAINS(KeyWords, @searchTerm))
Das funktioniert wie erwartet, aber ich brauche das gleiche mit einem Dapper zu tun .net parametrisierte Abfrage. Wenn ich gespeicherte Prozeduren verwende, erstelle ich den Volltext-Parameter wie folgt: "\"painted*\""
Aber mit dem gleichen Ansatz funktioniert das nicht mit Dapper. Keine Ergebnisse werden zurückgegeben. Dies ist die Zeile in der Abfrage, wo ich die Parameter verwenden:
AND (CONTAINS(KeyWords, @search))
und es ist wie so an die Abfrage übergeben:
return _context.Database.Connection.Query<StockProfileMatrix>(basequery, new
{
search = searchTerm
}
Ich kann nur annehmen, dass adrett irgendwie die Zeichenfolge Hygienisierung, Entfernen Anführungszeichen vielleicht?
Irgendwelche Ideen?
Dapper sanieren nicht * alles * - es verwendet Parameter. Alles, was in TSQL mit einer Variablen * funktioniert, sollte auch als Parameter funktionieren. Der einzige bemerkenswerte Unterschied ist, dass dapper standardmäßig Unicode ('nvarchar') verwendet. Anders gesagt, wenn 'searchTerm' (in C# -Termen) die Zeichenkette' 'painted'' wäre, wäre es * mit Ihrer TSQL ganz oben * identisch und sollte gut funktionieren. In TSQL-Bedingungen funktioniert Ihre oberste Abfrage mit 'DECLARE @searchTerm NVARCHAR (500) = N'painted'? Hinweis: Wenn der * Term *, hinter dem Sie her sind, 'painted *' ist, dann wird in C# Begriffen nur '' painted * '' '' '' '' –
@marpsmith - Ich renne in die Hast du das Muster gefunden? Denn wenn ich 'where contains (@ name, 'campb')' it * schreibe gibt nichts zurück auf sql und dapper * was * konsistent * ist, aber wenn ich 'where contains (@name, '' campb '')' * auf sql gibt Zeilen zurück, aber nichts auf dapper * - irgendeine Eingabe? – Jaya