gpt4 book ai didi

c# - 无法在 Entity Framework 中使用 SQL 查询获取数据

转载 作者:行者123 更新时间:2023-11-30 14:12:25 25 4
gpt4 key购买 nike

我正在尝试使用以下 SQL 查询从我的数据库中获取前两列数据:

SELECT  Id, DomainUrl
FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY Id ) AS RowNum, Id, DomainUrl
FROM SiteDatas
) AS RowConstrainedResult
WHERE RowNum >= 1
AND RowNum <= 10
ORDER BY RowNum

我正在使用 Entity Framework 并为行传递参数,以便以后可以通过 ajax 将其用作加载时的滚动功能。但是,当我到达该行时出现错误:

var stores = db.SiteDatas.SqlQuery(SQL, parameters).ToList();

这是一个实体命令执行异常,表明数据读取器与类型的指定模型(我的数据库)成员不兼容,“机器人”(这是我正在调用的那个之后的下一列),不在数据读取器中有对应的同名列。

我将如何以可以序列化为 json 的方式只获取前两列?

最佳答案

DbSet.SqlQueryDatabase.SqlQuery命令都返回实体实例。您的 sql 查询必须返回与您的实体相同的列。最有可能的是,您的 SiteData 类包含一个在您的 SQL 查询中不存在的 Robots 列。

您仍然可以使用 Database.SqlQuery< T >返回您的数据,前提是您指定返回类型。返回类型不必是实体类型,只需具有与结果集相同的列名即可。

假设 db 是一个 DbContext 实例,你可以这样写:

public class MyResults
{
public int ID{get;set;}
public string DomainUrl {get;set;}
}

...

var stores = db.Database.SqlQuery<MyResults>(SQL, parameters).ToList();

关于c# - 无法在 Entity Framework 中使用 SQL 查询获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17673559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com