我正在做一个asp.net核心项目。在该项目中,我需要执行一个sql字符串查询,并将结果检索到一个自定义模型。我尝试使用 context.Database.SqlQuery<ReportModel>
. 但是 Database.SqlQuery
asp.net核心不支持。请找到我的代码如下:
public List<ReportModel> GetReportDetails(string customQuery)
{
try
{
List<ReportModel> listReportModel = new List<ReportModel>();
var queryResult = context.Database.SqlQuery<ReportModel>(customQuery);
foreach (var item in queryResult)
{
listReportModel.Add(item);
}
return listReportModel;
}
catch (Exception ex)
{
throw;
}
}
我也尝试了以下答案https://stackoverflow.com/questions/35631903/raw-sql-query-without-dbset-entity-framework-core 但是,使用这个解决方案,我需要更新我的上下文类。我无法更新上下文类。
在asp.net core 3.1中,是否有其他方法执行sql字符串查询?任何帮助都是值得赞赏的。谢谢您!
3条答案
按热度按时间7ajki6be1#
您可以使用下面的代码。
ql3eal8s2#
在您的评论中,您说您遇到了一个错误:
无法为“reportmodel”创建dbset,因为上下文的模型中不包含此类型
这个错误仅仅是因为您在这里使用的类reportmodel显然没有添加到您的上下文中。你必须写下:
当你写作的时候
您正在表上间接查询它。因此,不修改上下文类就不可能执行查询。上下文类成为从数据库查询数据的助手。
axzmvihb3#
您可以通过context.database属性使用ado.net。
https://www.learnentityframeworkcore.com/raw-sql#leveraging-ado.net-via-the-context.database-property属性
这是一个具体的实现。
https://github.com/dotnet/efcore/issues/2344#issuecomment-172641417