实体框架 - 带有参数列表 <> 的 SqlQuery [重复]

问题描述 投票:0回答:1

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

c# sql entity-framework
1个回答
2
投票

我在这样的子句中处理它:

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
语句的返回列相匹配的属性。

让我知道你过得怎么样。谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.