Sql 在 ormlite 服务栈中

Sql in ormlite servicestack

我将 ormlite 与 servicestack 一起使用,但遇到了这个问题。 我在我的数据库的一列中保存了一个字符串列表,所以我想像这样做一个 select sql : Select 前 1 * 来自我的表格 MyVariable 位于 (MyListSavedInDb)

var orders = db.Select<Order>(o => Sql.In(o.Ldv, o.Waybills));

其中 o.Ldv 是字符串,o.Waybills 是保存在数据库中的字符串列表

有什么解决办法吗?

您不能使用服务器端 SQL 查询 blobbed 字段,您最好做的是模糊字符串索引搜索,例如:

var q = db.From<Order>();
q.Where($"CHARINDEX({q.Column<Order>(x=>x.Ldv)},{q.Column<Order>(x=>x.Waybills)}) > 0")
 .Take(1);
var order = db.Single(q);

但本质上,您不应该对要对其执行服务器端 SQL 查询的任何字段进行 blob。

一种更加类型化和健壮的方法是在过滤结果集后对客户端上的斑点集合执行最终查询,例如:

var orders = db.Select(q);
var order = orders.FirstOrDefault(x => x.Waybills.Contains(term));

但是由于此查询是在客户端上完成的,因此您需要确保它是在有限的过滤结果集上完成的。