如何编写LINQ以使用CONTAINS关键字生成SQL



我正在使用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

最新更新