C# 实体框架存储过程单个结果集
我正在使用MySQL存储过程,并尝试使用EF6检索单个结果集。我的存储过程包含简单的select语句,我已将其映射到我的模型中。下面是EF生成的映射到我的存储过程的类C# 实体框架存储过程单个结果集,c#,mysql,.net,entity-framework,stored-procedures,C#,Mysql,.net,Entity Framework,Stored Procedures,我正在使用MySQL存储过程,并尝试使用EF6检索单个结果集。我的存储过程包含简单的select语句,我已将其映射到我的模型中。下面是EF生成的映射到我的存储过程的类 public partial class usp_aggregatedLogs_Result { } 它是由EF生成的空类。我已将属性添加到此类,以将其映射到存储过程返回的结果集 public partial class usp_aggregatedLogs_Result { public int Accoun
public partial class usp_aggregatedLogs_Result
{
}
它是由EF生成的空类。我已将属性添加到此类,以将其映射到存储过程返回的结果集
public partial class usp_aggregatedLogs_Result
{
public int AccountId { get; set; }
public string AccountName { get; set; }
public string ProjectId { get; set; }
public string ProjectName { get; set; }
public string SystemId { get; set; }
public string SystemName { get; set; }
public string ParameterId { get; set; }
public string ParameterName { get; set; }
public Nullable<System.DateTime> TimeStamp { get; set; }
public long LogId { get; set; }
public string Type { get; set; }
}
下面是EF在DBContext类中生成的代码
public virtual ObjectResult<usp_aggregatedLogs_Result> usp_aggregatedLogs(Nullable<System.DateTime> dateFrom, Nullable<System.DateTime> dateTo)
{
var dateFromParameter = dateFrom.HasValue ?
new ObjectParameter("DateFrom", dateFrom) :
new ObjectParameter("DateFrom", typeof(System.DateTime));
var dateToParameter = dateTo.HasValue ?
new ObjectParameter("DateTo", dateTo) :
new ObjectParameter("DateTo", typeof(System.DateTime));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<usp_aggregatedLogs_Result>("usp_aggregatedLogs", dateFromParameter, dateToParameter);
}
我假设调用此函数应该返回存储过程返回的结果集。我这样称呼它
List<usp_aggregatedLogs_Result> ResultList= obj.usp_aggregatedLogs(DateFrom, DateTo).ToList();
我在结果列表中收到结果。我收到43个对象,这是正确的,因为我的存储过程返回43行。但是我没有得到这些对象的属性值。所有属性值都设置为0或null。似乎我的ResultList对象未初始化
我不知道如何正确调用存储过程并将其结果集检索到应用程序中
请帮忙 我用了一点技巧 创建与过程返回的数据具有相同数据结构的视图,并将其添加到edmx中。它不需要任何合乎逻辑的东西。可以是: 选择1作为AccountId,选择ABC作为AccountName。。。从x 只要它有正确的数据类型。但是,如果您的过程只过滤一些可以放入视图中的数据,我建议您使用有意义的完整视图 在EF中映射过程时,选择映射视图作为返回类型 您不必从过程返回视图。您可以返回任何数据,只要它具有与视图匹配的结构 在C中,您的过程现在将返回视图项的集合
这在MSSQL上对我很有效,所以如果你能在MySQL上启动它,请告诉我。你使用db优先的方法吗?您不能仅仅更改设计器生成的类。您必须在edmx中具有正确的映射。如果您现在刷新您的过程映射,您的自定义代码将显示。我使用的是db_优先方法。但是EF针对我的过程生成了一个空类。我如何正确地映射它?您好,Grzegorz W我无法理解您在EF中映射过程时提到的步骤2选择映射视图作为返回类型。我尝试过你的方法我创建了一个视图,它的结果集与我的过程完全相同,我将它映射到我的EF中,我将函数的返回类型从ObjectResult更改为ObjectResult,它在运行时给我一个异常,即函数返回的类型不同。