这是我通常在我的实现中执行的方式。
一个通用接口,IEntityRepository定义您的基本CRUD结构。在我实现我定义了以下成员:
- 插入
- 更新
- 删除
- 获取
- GetPaged
- GETALL
- 查找(此人使用谓词生成器生成where子句)
我创建了另一个继承IEntityRepository的接口IMyentityRepository。这允许我添加任何特定于实体的成员,并且在需要时仍然可以使用DI。然后创建我的密封类MyentityRepository,继承IMyentityRepository并实现所有成员。
当您使用依赖注入时,您可以为MyentityRepository的具体类型注册接口(IMyentityRepository)。
就我而言,我并没有真正完成。我在存储库之上创建了一个服务层来封装它,并以更一般的方式公开它。例如,假设您想为您的用户创建一个帐户,这可能涉及比创建数据库记录更多的工作。在您的服务中,您将有一个名为CreateUser()的成员,它可能会在其实现中调用多个存储库成员。 我的服务层与我的存储库层相同。我有通用的CRUD成员IEntityService,实体特定成员IMyentityService和MyentityService实现。 MyentityService类将需要一个IMyentityService实例(您可以将其注入到您选择的IoC框架中)您的服务层也可以执行验证和任何业务逻辑。我在控制器中进行验证。好吧,从技术上讲,我调用它我的控制器,然后得到结果,然后我可以写入ModelState。
希望有所帮助。
您是否正在创建一个接口,然后为那些只获取存储库的具体类? – TampaRich 2009-06-09 00:52:08