我使用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
我如何实现这一目标?
答案 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