2011-04-02 81 views
2

我对项目结构有以下几点,这些都是单独的项目,我被告知这样做,所以不是我的选择。MVC-3项目结构

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操作,那么存储库应该从服务层/业务逻辑层实例化?

请输入一些??

回答

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到他的构造和使用的业务操作。

然后,所有内容都将通过您选择的依赖注入框架进行连接。

+0

我同意Darin。这种结构让生活变得轻松 – 2011-04-02 15:44:06

+0

非常感谢。我对你有另外一个问题,因为你似乎对这个问题有很好的把握。当我说出它时,我会将它链接到 – CrazyCoderz 2011-04-02 16:21:52

+0

http://stackoverflow.com/questions/5524414/implementing-this-generic-repository-unit-of-work-and-repository-factory – CrazyCoderz 2011-04-02 16:34:28