实体框架 4 CTP 4 / CTP 5 通用存储库模式和可单元测试
我正在使用最新的实体框架 CTP 5 版本并构建一个简单的 asp.net MVC 博客,其中只有两个表:帖子和评论。这完全是在 POCO 中完成的,我只需要 DbContext 部分的帮助,我需要它可以进行单元测试(使用 IDbSet?),并且我需要一个简单/通用的存储库模式来添加、更新、删除、检索。任何帮助表示赞赏。
谢谢。
I'm playing with the latest Entity Framework CTP 5 release and building a simple asp.net MVC blog where I just have two tables: Post and Comments. This is done entirely in POCO, I just need help on the DbContext part, where I need it to be unit testable (using IDbSet?) and I need a simple/generic repository pattern for add, update, delete, retrieval. Any help is appreciated.
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
从 DbContext 开始,创建一个名为 Database.cs 的新文件:
Database.cs
定义一个 IDatabaseFactory 并使用 DatabaseFactory 实现它:
IDatabaseFactory.cs
DatabaseFactory.cs< /strong>
一次性扩展方法:
Disposable.cs
现在我们可以定义我们的 IRepository 和 RepositoryBase
IRepository.cs
RepositoryBase.cs
现在您可以创建您的 IPostRepository 和 PostRepository:
IPostRepository.cs
PostRepository.cs
最后,UoW:
IUnitOfWork.cs
UnitOfWork.cs
在控制器中使用:
您将需要使用像 StructureMap 这样的 IoC 容器来完成这项工作。您可以通过 NuGet 安装结构图,或者如果您使用的是 MVC 3,则可以安装 StructureMap-MVC NuGet 包。 (下面的链接)
安装包 StructureMap.MVC4
安装包 StructureMap.MVC3
安装包结构图
如果您有疑问,请告诉我。希望有帮助。
Start with you DbContext, create a new file called Database.cs:
Database.cs
Define a IDatabaseFactory and implement it with DatabaseFactory:
IDatabaseFactory.cs
DatabaseFactory.cs
Disposable extension method:
Disposable.cs
Now we can define our IRepository and our RepositoryBase
IRepository.cs
RepositoryBase.cs
Now you can create your IPostRepository and PostRepository:
IPostRepository.cs
PostRepository.cs
Lastly, the UoW:
IUnitOfWork.cs
UnitOfWork.cs
Using in your controller:
You will need to use an IoC container like StructureMap to make this work. You can install structure map via NuGet, or if you are using MVC 3, you can install the StructureMap-MVC NuGet package. (Links Below)
Install-Package StructureMap.MVC4
Install-Package StructureMap.MVC3
Install-Package Structuremap
If you have questions just let me know. Hope it helps.
我唯一要做的不同是在实现中,即在服务层中公开 IPostRepository 并在控制器中具有 IPostService 类型的接口字段,就像另一层抽象一样,但除此之外,这是一个很好的例子 - 很好,Paul 。
The only thing I'd do differently is in the implementation, i.e. expose the IPostRepository in the service layer and have an interface field of type IPostService in the controller just as another layer of abstraction but otherwise this is a good example - nice one, Paul.