我正在寻找一个很好的示例项目使用存储库模式和存储过程。我花了很多次,我找不到任何使用sp来与存储库模式和数据库通信的好例子。即使是一个普通的CRUD,我仍然会使用SP。存储库模式和存储过程
另外,有没有人有一个例子来执行存储过程中的复杂数据在EF中的代码?
例如,存储过程返回多个数据表? 感谢
我正在寻找一个很好的示例项目使用存储库模式和存储过程。我花了很多次,我找不到任何使用sp来与存储库模式和数据库通信的好例子。即使是一个普通的CRUD,我仍然会使用SP。存储库模式和存储过程
另外,有没有人有一个例子来执行存储过程中的复杂数据在EF中的代码?
例如,存储过程返回多个数据表? 感谢
我无法找到使用SP与 库模式commmunicate任何很好的例子。即使是一个普通的CRUD,我仍然会使用SP。
只要想一下pattern和您的选择 - 您只能使用SP并且希望负责数据访问的对象。你不需要任何示例项目 - 你只需要思考。
当执行存储过程,你会通过接口等被定义简单的DAO(数据访问对象)结束仓库:
public interface IEntityDao
{
IEnumerable<Entity> GetAll();
Entity GetByKey(int key);
bool Insert(Entity data);
bool Update(Entity data);
bool Delete(int key);
}
这是CRUD操作基本界面上Entity
坚持类。每个方法实现都会调用单个存储过程来执行操作。如果您需要任何其他操作(例如某些过滤或排序),您将创建新的存储过程并公开调用此存储过程的新操作。
如果这是或不是存储库,可以讨论,但只是SP不会为您提供更多。例如,这部分定义几乎不可能在通用级别上实现:
客户端对象以声明方式构造查询规范,并将它们提交到Repository以满足要求。
您的“查询规范”将始终只有特定于给定存储过程的参数并传递给您的公开操作。您将无法声明性地定义整个查询(除非您将SQL作为参数传递给SP)。
您可以直接通过ADO.NET调用存储过程,也可以在EF中使用函数import或ExecuteStoreQuery
/ExecuteStoreCommand
。 EF能够执行具有此限制的复杂存储过程:
函数导入具有更少的次要限制。如果遵循这些规则,您将能够为SP返回的每个结果集创建类/复杂类型。
好吧,这意味着我不应该根据您的建议使用来自Repository。不是吗? 我很困惑以及如何使用EF来进行实体映射。这就是为什么我真的想要一个例子。 – 2012-02-17 23:48:48
我没有这么说。如果你需要使用SP,你将永远以这样的结果结束。 – 2012-02-17 23:53:21
我编辑了我以前的答案。 因为您描述的方式只是ADO.Net,这是我目前使用CRUD进行的项目设计。 – 2012-02-17 23:55:32
在谷歌机器上有很多示例演示存储库模式。另外,你还在问第二个问题,这个问题并不十分清楚。你是什么意思*在存储过程中执行复杂的数据到代码EF * – IAbstract 2012-02-17 18:09:04
我找不到任何使用sp与存储库模式进行通信的好例子。即使是一个普通的CRUD,我仍然会使用SP。 – 2012-02-17 18:48:14