实体框架 - 带有List<>的SqlQuery参数

时间:2014-09-18 02:02:58

标签: c# sql entity-framework

我正在尝试使用EF来使用IN子句查询数据库:

List<int> ids = new List<int> {1,2,3,4....20};
string sql = GetSql(ids);
//sql is "SELECT * FROM Student WHERE Id in (@p0, @p1, @p2 ... @p19)"
var res = db.Set<Student>().SqlQuery(sql, ids);

但我得到以下例外:

从对象类型System.Collections.Generic.List`1 [[System.Int64,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089]]到目标托管服务提供商本机不存在任何映射类型。

1 个答案:

答案 0 :(得分:1)

我正在处理这样的条款:

  List<int> ids = new List<int> {1,2,3};
   db.Set<Student>().Where(r => ids.Contains(r.ID));

更新:

你做如下(我没有亲自测试但它应该做你的工作)

 public List<CustomObject> ExecuteCustomQuery(List<int> items)
 {
        var ids = string.Join(",", items.Select(i => i.ToString()).ToArray());
       string query = "SELECT Column1, Column1 FROM TABLE1 where id in (" + ids + ")";
       return dbContext.Database.SqlQuery<CustomObject>(query).ToList();


}

CustomObject有两个返回select语句列的属性。

请告诉我你是怎么做的。

感谢。