【发布时间】:2016-05-21 13:46:53
【问题描述】:
我想了解的是如何使用 DbContext 调用存储过程并返回一个不是实体的对象,好的,让我再解释一下,以防我没有正确理解术语
我有一个 C# Code First 数据上下文,它具有数据库中表的实体模型和映射模型。我还有大约十个返回报告数据的存储过程,这些存储过程都没有映射到我拥有的任何实体。
我想做的是创建一个类,它代表存储过程生成的一行,以及如何使用参数调用其对应的存储过程并获取一个列表。
我已经尝试过这个程序,试图了解一个返回 5 行数据且只有两列的简单存储过程发生了什么
public class ReportA
{
public string Amount { get; set; }
public string Name { get; set; }
}
private MyContext _context = new MyContext();
public List<ReportA> GetReportA(DateTime startDate)
{
var parameters = new[]
{
new SqlParameter("@Startdate", SqlDbType.DateTime)
{
IsNullable = false,
Value = startDate
}
};
var result = _context.Database.SqlQuery<List<reportA>>(
"dbo.ReportA @Startdate", parameters);
return result
}
它会触发,但我什么也得不到。任何建议或帮助将不胜感激
【问题讨论】:
-
这并不像在查询末尾添加 .ToList() 那样简单吗? SqlQuery 只是返回一个原始查询,您需要调用 .ToList() 来实际返回数据。
标签: c# entity-framework stored-procedures