2

我有以下项目结构,这些都是单独的项目,有人告诉我这样做,所以不是我的选择。

CORE 
  --Self Explanitory
DATA 
  --Contains EF 4.1 EDMX, POCO's Generic Repository Interface
DATAMapping
  --Contains Generic Repository
Services
  -- Contains nothing at the moment
MVC 3 Application
  -- Self Explanitory

这是我的问题。我一直在阅读,最好的做法是让控制器保持节食,并且模型/视图模型应该是愚蠢的,因此在我的项目结构中引入了服务层部分。现在的实际问题;这是一个好方法还是我为自己创造了太多的工作?

因此,如果我想说对产品或类别或任何其他实体有一些 CRUD 操作,存储库应该从服务层/业务逻辑层实例化吗?

请输入一些?

4

1 回答 1

3

就我个人而言,我的服务层仅引用了用于 CRUD 操作的通用和抽象存储库。例如,服务层构造函数可能如下所示:

public class MyService: IMyService
{
    private readonly IFooRepository _fooRepo;
    private readonly IBarRepository _barRepo;

    public MyService(IFooRepository fooRepo, IBarRepository barRepo)
    {
        _fooRepo = fooRepo;
        _barRepo = barRepo;
    }

    public OutputModel SomeBusinessMethod(InputModel input)
    {
        // ... use CRUD methods on _fooRepo and _barRepo to define a business operation
    }
}

控制器将简单地将一个IMyService带入他的构造函数并使用业务操作。

然后一切都将由您选择的依赖注入框架连接。

于 2011-04-02T15:18:03.897 回答