c# - Entity Framework - 带有参数列表 <> 的 SqlQuery

标签 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]] 到已知托管提供程序 native 的映射类型。

最佳答案

我正在处理这样的子句:

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

告诉我你过得怎么样。

谢谢。

关于c# - Entity Framework - 带有参数列表 <> 的 SqlQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25903069/

相关文章:

C# Windows 窗体设置所选索引组合框的值

c# - 退出全屏时视频不会调整到窗口大小

SQL Server 2008 DateTime范围查询

.net - SQL Server 和 .NET : insert fails (silently! ) 在代码中,但在手动运行时不是

php - PostgreSQL SELECT WHERE IN 子查询具有来自其他列的自己的条件

c# - 垃圾收集器不再有引用

c# - 将异步任务切换为同步任务

entity-framework - base.OnModelCreating(modelBuilder) 是必要的吗?

c# - Entity Framework 线程安全创建实体(如果不存在)

c# - Linq to Entities Skip() 和 Take()