如何使用Entity Framework 6

时间:2016-08-26 13:05:36

标签: c# mysql sql entity-framework-6

我有一个包含一些ID的列表,我想要选择ID在该列表中的记录。到目前为止我已经

var ids = new List<long> {1, 2, 3};  // Actually the list is not hard coded
using(var context = new MyContext())
{
   context.MyModel.Database.SqlQuery("SELECT * FROM dbo.MyModel WHERE Id IN @p0", ids).ToList();
}

但这不起作用,它给了我一个MySql.Data.MySqlClient.MySqlException

  

您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以便在&#39; _binary&#39; System.Collections.Generic.List`1 [System.Int64]&#39;附近使用正确的语法。      &#39;在第1行

请不要给我一个LINQ解决方案。提前谢谢。

1 个答案:

答案 0 :(得分:0)

我认为你不能将数组传递给sql, 这适用于SqlServer您可能需要更改为MySql的新MySQLParameter

var inParams = ids.Select((id, i) => new SqlParameter("p"+i, id));

var query = "select * from Employees where Id in (" + string.Join(",", inParams.Select(p => "@" + p.ParameterName)) + ")";

var data = db.Database.SqlQuery<Employee>(query, inParams.Cast<object>().ToArray()).ToList();

此外,您可以将LINQ用于更复杂的查询以及具有AS和JOIN以及UNION

的查询