实体框架-带列表的SqlQuery<>;的参数

本文关键字:lt gt 参数 框架 SqlQuery 列表 实体 | 更新日期: 2023-09-27 18:22:32

我正试图使用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]到已知托管提供程序本机类型的映射

实体框架-带列表的SqlQuery<>;的参数

我正在处理这样的子句:

  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语句的列的两个属性。

告诉我你过得怎么样。

谢谢。