2016-08-25 10 views
2

Wie wir servicestack die ormlite SQL zu generieren bekommen, das tut eine WHERE-Klausel wie folgt aus:ServiceStack ormlite mit SQL Server: wie eine where-Klausel mit Wildcards bekommen

WHERE FirstName like '%joe%' OR lastname like '%joe%' 

Zeit, wenn ich dies tun:

db.Select<Person>.Where(x=> x.LastName.Contains(searchstring) || x.FirstName.Contains(searchstring)); 

wird es eine generieren WHERE-Klausel wie die folgende, ohne die benötigten Platzhalter:

WHERE FirstName like 'joe' OR lastname like 'joe' 

Antwort

3

String ex Enthält Pressions in OrmLite arbeitet in diesem Live example on Gistlyn gesehen, wie erwartet, die die neueste Version von OrmLite verwendet:

LogManager.LogFactory = new ConsoleLogFactory(); 

public class Person 
{ 
    [AutoIncrement] 
    public long Id { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 

db.CreateTable<Person>(); 

db.Insert(new Person { FirstName = "Joeseph", LastName = "Smith" }); 

var rows = db.Select<Person>(x => 
    x.FirstName.Contains("joe") || x.LastName.Contains("joe")); 

, die die gültige Übereinstimmung gibt, wie erwartet und protokolliert die Abfrage an die Konsole ausgeführt:

DEBUG: SQL: CREATE TABLE "Person" 
(
    "Id" INTEGER PRIMARY KEY AUTOINCREMENT, 
    "FirstName" VARCHAR(8000) NULL, 
    "LastName" VARCHAR(8000) NULL 
); 

DEBUG: SQL: INSERT INTO "Person" ("FirstName","LastName") VALUES (@FirstName,@LastName) 
PARAMS: @FirstName=Joeseph, @LastName=Smith 
DEBUG: SQL: SELECT "Id", "FirstName", "LastName" 
FROM "Person" 
WHERE (upper("FirstName") like @0 OR upper("LastName") like @1) 
PARAMS: @0=%JOE%, @1=%JOE% 

OrmLite verwendet seit einiger Zeit parametrisierte Abfragen, so dass Sie eine alte Version von OrmLite verwenden müssen. Wenn Sie ein Upgrade auf die neueste Version von Ormlite durchführen, sollte es wie erwartet funktionieren.

+1

yep - Ich war weit hinter meiner Ormlite-Version für dieses Projekt ... aktualisiert es und es funktioniert gut – scoob

Verwandte Themen