No mapping exists from ObjectParameter to a known managed provider native type

匿名 (未验证) 提交于 2019-12-03 08:28:06

问题:

I am in the process of building a WCF service using EF to a Microsoft SQL Server but keep getting the following error:

Additional information: No mapping exists from object type System.Data.Objects.ObjectParameter to a known managed provider native type.

On this query:

string ID = "XXID"; string Sql = @"SELECT * FROM @Table WHERE " + ID + " LIKE '@SearchTerm'"; ObjectParameter[] Parameters = new ObjectParameter[2]; Parameters[0] = new ObjectParameter("Table", Table); Parameters[1] = new ObjectParameter("SearchTerm", SearchTerm);  using (var Context = new XXEntities()) {     Context.Database.Connection.Open();     IEnumerable<string> Query = Context.Database.SqlQuery<string>(Sql, Parameters);      string[] Results = Query.ToArray();     Context.Database.Connection.Close();     return Results;  } 

I have tested the query on SQL Server and it works as expected- returning the record of a matched ID.

回答1:

try using sql parameter instaed of object parameter

IEnumerable<string> Query = Context.Database.SqlQuery<string>(Sql,  new SqlParameter("Table", Table),  new SqlParameter("SearchTerm", SearchTerm)); 

Theoretically you can manipulate sql without the need of any send in parameters like this

IEnumerable<string> Query = Context.Database.SqlQuery<string>("SELECT * FROM "+Table+" WHERE " + ID + " LIKE '"+SearchTerm+"'"); 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!