我正在使用EF连接Oracle数据库,并编写类似的linq查询
var keyword = this.Keywords.ToLower();
var filteredItems = from item in active_items
where item.Name.Contains(keyword)
select item;
从linq生成的SQL使用了用%%符号包装的Like和关键字。
e.g. WHERE "EXTENT1"."NAME" LIKE '%keyword%'
这似乎还可以,但我需要sql来使用"Contains"关键字,并需要sql像一样
e.g. WHERE CONTAINS(NAME,'keyword') > 0
我该如何做到这一点?
第一个选项:使用devart库:http://blog.devart.com/using-oracle-full-text-search-in-entity-framework.html
第二种选择:在oracle中创建一个存储过程,接收您的关键字并进行搜索,然后将该过程映射到您的模型中(如果您首先使用模型)
第三种选择:在linq映射中使用类似INSTR的函数。请参阅http://docs.oracle.com/cd/E11882_01/win.112/e18754/canonical_map.htm#ODPNT7777