EF6使用转义的char抛出“输入字符串格式不正确”异常

时间:2018-02-05 07:22:42

标签: c# entity-framework-6 oracle12c oracle-manageddataaccess

我有这个代码适用于所有情况,除非framework.cache内有?=个符号

{}

如果我删除{?}它有效,如果我硬编码 var db = new MyContext(); var fullSql = @"select /*+ PARALLEL(6) */ id from table1 ( contains(sometext,' ( {?}xxx ) ') > 0 ) and some_field = :someParam order by xxx desc fetch next 10 rows only "; var sqlParams = new List<object>(); sqlParams.Add(0); var ids = db.Database.SqlQuery<string>(fullSql, sqlParams.ToArray()).ToList(); 它也有效。如果没有通过someParam

编辑:好像EF将Curly Brackets中的内容视为参数

2 个答案:

答案 0 :(得分:0)

你需要放一个&#34; q&#34;在你的字符串前面,使它成为字面

因此:来自table1(包含(sometext,q&#39;({?} xxx)&#39;)&gt; 0)

请参阅此问题:How to use curly brace escaping for Oracle

答案 1 :(得分:0)

是的,正如您在评论中提到的,解决方案是将所有 { 替换为 {{。以及所有带有 }}}