Asp.net mvc 5 使用存储过程的实体框架数据库优先方法
我希望构建MVC5应用程序的数据访问层。在我们的项目中,我们只使用存储过程的数据库优先方法,因为团队更熟悉SQL,并且希望通过存储过程执行所有CRUD操作Asp.net mvc 5 使用存储过程的实体框架数据库优先方法,asp.net-mvc-5,entity-framework-6,Asp.net Mvc 5,Entity Framework 6,我希望构建MVC5应用程序的数据访问层。在我们的项目中,我们只使用存储过程的数据库优先方法,因为团队更熟悉SQL,并且希望通过存储过程执行所有CRUD操作 我正在寻找展示这种方法实现的好例子。我想看看实体是如何映射的。因为这将是数据库中的存储过程映射到.net中的类 如果您打算使用EF,我认为是您的团队熟悉EF的时候了。用存储过程执行每一个CRUD操作不是我要走的路。如果存储过程正在执行以下简单操作: Get the company record with ID 1 然后,我将不使用存储过程和
我正在寻找展示这种方法实现的好例子。我想看看实体是如何映射的。因为这将是数据库中的存储过程映射到.net中的类 如果您打算使用EF,我认为是您的团队熟悉EF的时候了。用存储过程执行每一个CRUD操作不是我要走的路。如果存储过程正在执行以下简单操作:
Get the company record with ID 1
然后,我将不使用存储过程和EF。对于更复杂的操作,可以使用存储过程。因此,您和您的团队可能希望有一个团队工作会议来决定何时使用存储过程,何时不使用存储过程。一旦您做出决定,整个团队都应该坚持这种方法。如果你需要改变它,再开一次会议,确保每个人都知道。一旦团队同意,每个人都必须遵循相同的模式
如何将存储过程与EF一起使用
我将从一个测试存储过程开始,看看整个过程是如何工作的。一旦您和您的团队确切地了解了EF的工作流程,然后将设计、惯例等组合在一起,然后整个团队应该遵循相同的模式
编写一个返回结果集的测试存储过程。
通过从Visual Studio连接到数据库来创建EDMX。
将存储过程添加到EDMX。
使用模型浏览器添加函数导入。这将在您的上下文中创建一个方法,您可以像调用任何其他方法一样调用它,但在它下面将调用您的存储过程。有关如何执行此步骤的更多信息,请参阅答案。
步骤4将基于存储过程的结果集创建一个类。
注
您可能需要暂时将此标志设置为off,以便EF根据存储过程结果集创建复杂类型
SET FMTONLY OFF
有关该标志的更多信息,请参见答案。我同意您的看法,即使用storedprocs的方法不是前进的方向,而是团队需要对StoredProcess进行更多控制,以便sql团队能够解决生产中出现的问题。他们还希望能够修复storeprocedures中的问题并进行部署,而不是触及代码库并进行部署。实际上我已经试过你建议的那个了。直到创建函数导入的级别。我正在看一个关于如何在实体框架上创建包装器的示例,以及如何将StoredRecordes自动映射到business ObjectsOry,但您在问题中没有提到您正在寻找包装器的所有内容……也许您应该阅读。此外,对于映射,您可以使用抱歉,因为我的问题不清楚。我知道自动映射器,并且已经完成了到表的映射。存储过程的映射是如何完成的您的确切意思是什么?在我的回答中,我已经解释过SPs将返回一个复杂的类实例。您将像其他对象一样将其映射到业务对象。