2017-03-11 53 views
-2

我期待构建我的MVC5应用程序的数据访问层。在我们的项目中,我们只用存储过程的数据库优先方法,因为团队更熟悉SQL并希望通过存储过程执行所有CRUD操作。使用存储过程的实体框架数据库第一种方法

我在寻找一个很好的例子来展示这种方法的实现。我想看看这些实体是如何映射的。因为这将是数据库中的存储过程映射到.net中的类。

回答

0

我认为如果您打算使用它,您的团队可以与EF成为“熟悉的”时间。使用存储过程执行每个CRUD操作不是我要采用的路径。如果存储过程做的很简单:

Get the company record with ID 1 

然后我不会使用存储过程并使用EF。对于更复杂的操作,可以使用存储过程。因此,您和您的团队可能希望通过团队工作会话来决定何时使用存储过程以及何时不使用存储过程。一旦你决定了,整个团队应该坚持这种做法。如果您需要更改它,请再次开会并确保每个人都知道。一旦团队同意,每个人都必须遵循相同的模式。


如何在EF中使用存储过程?

我会从一个测试存储过程开始,看看整个事情是如何工作的。一旦你和你的团队确切地知道这个过程如何与EF一起工作,然后把一个设计,规则等整合起来,然后整个团队应该遵循相同的模式。

  1. 编写一个测试存储过程,返回一个resulset。
  2. 通过从Visual Studio连接到数据库来创建EDMX。
  3. 将存储过程添加到您的EDMX。
  4. 使用模型浏览器添加Function Import。这将在您的上下文中创建一个方法,您可以像调用其他任何方法一样调用该方法,但在其下方会调用您的存储过程。有关如何执行此步骤的更多信息,请参阅this答案。
  5. 第4步将根据您的存储过程的结果集创建一个类。

注意

您可能需要设置该标志为关闭,暂时为EF创建基于存储过程的结果集的复杂类型。

SET FMTONLY OFF 

查看this回答更多关于国旗的信息。

+0

我同意你的看法,使用storedprocs的不是办法的办法前进,但它只是球队需要的storedprocedures更多的控制权,以便SQL团队能够解决发生在生产中的问题。他们还希望能够解决存储过程中的问题并部署,而不是触及代码库并进行部署。我实际上已经尝试了你建议的那个。这是直到创建函数导入的级别。我正在看一个例子,说明如何创建一个包装器,以及如何将存储过程自动映射到业务对象 – Tom

+0

对不起,但你没有提到你的问题中没有提到你正在寻找一个包装器......也许你应该阅读[this](http://stackoverflow.com/help/how-to-ask)。另外,对于映射,您可以使用[AutoMapper](http://automapper.org/) – CodingYoshi

+0

对不起,我的问题不清楚。我知道自动映射器,并已完成映射到表。如何完成存储过程映射 – Tom

相关问题