我想要了解的是如何使用DbContext调用存储过程并返回一个不是实体的对象,如果我没有得到正确的术语,请让我解释一下
我有一个C#Code First Data Context,它有数据库中表的实体模型和映射模型。我还有大约十个存储过程返回报告数据,这些存储过程都没有映射到我拥有的任何实体。
我想要做的是创建一个表示存储过程生成的行的类,以及如何使用参数调用其对应的存储过程并获取List。
我试过这个尝试了解一个简单的存储过程发生了什么,返回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
}
它开了,但我什么也没收到。任何建议或帮助将不胜感激
答案 0 :(得分:0)
您应该使用以下代码:
var result = _context.Database.SqlQuery<ReportA>(
"dbo.ReportA @Startdate", parameters);
代替此代码:
var result = _context.Database.SqlQuery<List<ReportA>>(
"dbo.ReportA @Startdate", parameters);
请注意,我使用SqlQuery<ReportA>
而不是SqlQuery<List<ReportA>
&gt;。 SqlQuery
方法的模板应该是实体将被映射的类型,而不是结果的类型。