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

时间:2013-11-22 01:00:06

标签: sql oracle linq entity-framework linq-to-entities

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

我如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

第一个选项: 使用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