Dee*_*ani 5 c# stored-procedures entity-framework
我正在使用Entity Framework数据库第一种方法从Webforms到MVC应用程序进行项目转换,并准备好数据库以及所有存储过程.
我成功创建了一个.edmx文件,并且能够使用我的存储过程,并且在执行任何插入或更新操作时它工作得很好.但是当我在我的一个存储过程中使用select查询时出现了真正的问题.
例如,有一个Employee表格包含以下列:
EmpId, FirstName, LastName, Age, Salary
Run Code Online (Sandbox Code Playgroud)
我有一个存储过程GetAllEmpDetails有以下选择查询.
Select
EmpId, (FirstName + ' ' + LastName) as FullName, Salary
from
Employee
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试将此存储过程的结果与Employee具有5个属性的类绑定到表结构时,我得到一个错误,即该Age属性的值是预期的,但它在结果集中不可用.
我知道也没有FullName属性,所以我的问题是如何用生成的模型类解决这个问题(如本例所示Employee),以便它可以解决这些动态?
Cod*_*shi 14
如何在EF中映射存储过程?
由于您正在使用Database First Approach并且您有EDMX文件,因此让EF为您生成存储过程结果的类.您可能有许多存储过程,并且您希望避免手动创建类:毕竟这是使用ORM工具的全部要点.您的某些存储过程也可能包含参数.按照以下方式进行,将为您处理所有这些.它实际上非常简单.
要让EF为您执行此操作,请按照以下步骤操作:
您将看到类似于下面的对话框:
这将添加存储过程,您将在模型浏览器中看到它,如下所示:
一些笔记
这比手动编写类要好得多,以防您的存储过程名称或所需的参数或返回的结果发生变化.此方法也适用于用户定义的函数.
一个陷阱
有时存储过程不会出现在向导对话框中的选择中,因为这样.只需将其添加到存储过程的开头:
SET FMTONLY OFF -- REMEMBER to remove it once the wizard is done.
Run Code Online (Sandbox Code Playgroud)