Asp.net mvc 5 如何在实体框架中使用数据SQL函数填充控制器?

Asp.net mvc 5 如何在实体框架中使用数据SQL函数填充控制器?,asp.net-mvc-5,entity-framework-6,Asp.net Mvc 5,Entity Framework 6,我已经在我的数据库中创建了一个sql函数,它获取最新的参数并从5个表中获取数据 之后,将其作为实体框架从数据库添加到项目中,生成的代码为: [DbFunction(“Dr_Employee Entities”、“SelectEmployee”)] 公共虚拟IQueryable SelectEmployee(可为空的frm\U日期,可为空的to\U日期) { var frm_dateParameter=frm_date.HasValue? 新对象参数(“frm_日期”,frm_日期): 新的Obj

我已经在我的数据库中创建了一个sql函数,它获取最新的参数并从5个表中获取数据

  • 之后,将其作为实体框架从数据库添加到项目中,生成的代码为:

  • [DbFunction(“Dr_Employee Entities”、“SelectEmployee”)] 公共虚拟IQueryable SelectEmployee(可为空的frm\U日期,可为空的to\U日期) { var frm_dateParameter=frm_date.HasValue? 新对象参数(“frm_日期”,frm_日期): 新的ObjectParameter(“frm_date”,typeof(DateTime)); var to_dateParameter=to_date.HasValue? 新的ObjectParameter(“截止日期”,截止日期): 新的ObjectParameter(“to_date”,typeof(DateTime)); 返回((IObjectContextAdapter)this.ObjectContext.CreateQuery(“[Dr_Employee Entities]。[SelectEmployee](@frm_date,@to_date)”,frm_dateParameter,to_dateParameter); } 公共数据库集SelectEmployee_结果{get;set;} 如您所见,我现在有了“SelectEmployee\u Result”,它不接受任何参数,而“SelectEmployee”则接受两个日期参数

  • 之后,我为“SelectEmployee\u Result”类创建了一个控制器

  • 之后,我运行我的项目索引视图,使用“SelectEmployee\u Result”类会产生错误:

  • 类型“SelectEmployee\u Result”映射为复杂类型。Set方法、DbSet对象和DbEntityEntry对象只能用于实体类型,不能用于复杂类型

  • 我做了一个断点,看到“SelectEmployee_Result”没有数据,所以我更改了控制器中的索引代码,并用两个日期参数填充“SelectEmployee”

  • 当run得到同样的错误消息时

  • 那么,我如何从一开始就用两个日期之间的数据填充“SelectEmployee_Result”,以便在所有视图中使用它呢

    这里我需要的是查看我得到的数据,在将其保存到数据库中之前我会对其进行编辑,就像使用DataTable一样,但我需要使用sql函数从实体中进行编辑


    “SelectEmployee”是我的函数名,它需要两个参数和“SelectEmployee\u Result”之间有什么区别呢?

    你有什么问题吗?那么我如何从一开始就用两个日期之间的数据填充SelectEmployee\u Result,以便在所有视图中使用它呢?这里我需要的是查看我得到的数据,在保存到数据库之前我会像使用DataTable一样对其进行编辑,但我需要从带有sql函数的实体中进行编辑,我的函数名“SelectEmployee”和需要两个参数和SelectEmployee_结果之间的区别是什么? [DbFunction("Dr_EmploEntities", "SelectEmployee")] public virtual IQueryable SelectEmployee(Nullable frm_date, Nullable to_date) { var frm_dateParameter = frm_date.HasValue ? new ObjectParameter("frm_date", frm_date) : new ObjectParameter("frm_date", typeof(DateTime)); var to_dateParameter = to_date.HasValue ? new ObjectParameter("to_date", to_date) : new ObjectParameter("to_date", typeof(DateTime)); return ((IObjectContextAdapter)this).ObjectContext.CreateQuery("[Dr_EmploEntities].[SelectEmployee](@frm_date, @to_date)", frm_dateParameter, to_dateParameter); } public DbSet SelectEmployee_Result { get; set; }