【问题标题】:Proper way to build a data Repository in ASP.NET MVC在 ASP.NET MVC 中构建数据存储库的正确方法
【发布时间】:2010-06-15 02:21:56
【问题描述】:

我正在我的应用程序中使用存储库方法,我有一个非常基本的问题。

当我构建我的模型时,我有一个 Data.dbml 文件,然后我将我的存储库与它放在同一个文件夹中.... IE:

数据.dbml
IUserRepository.cs
UserRepository.cs

我的问题很简单。是像上面那样构建文件夹结构更好,还是可以简单地将我的界面与 UserRepository.cs 放在一起?

数据.dbml
UserRepository.cs              包含接口和类

只是在这里寻找“最佳实践”。提前致谢。

【问题讨论】:

    标签: asp.net asp.net-mvc interface repository


    【解决方案1】:

    一般的最佳实践是每个文件有一个类或一个接口。

    这是更通用的讨论,我认为这适用于您的情况: One class per file rule in .NET?

    作为您项目的新开发人员,如果知道 IUserRepository 的存在,我将不胜感激 - 无需浏览您的 UserRepository.cs 文件。

    【讨论】:

    • 谢谢。我将为每个类使用一个单独的文件。
    【解决方案2】:

    做任何对你有意义的事情。

    就我个人而言,我发现任何痛苦的浏览解决方案,所以我有热键 Goto Definition/Implementation 和 Resharpers FindUsages Go to Type, Go to File,所以我永远不必点击任何东西。

    如果类或接口很小,则将接口和类组合在一个文件中是有意义的。

    此外,如果您遵循Liskov substitution principal / 依赖注入策略和一般的良好设计实践,那么无论如何您都很少会与实际实现进行交互。存储库几乎不应该被它们的具体实现引用。

    【讨论】:

    • 谢谢。能否请您详细说明Repositories should almost never be referred to by their concrete implementation.
    • @rockinthesixstring 当你需要使用一个类时,你不引用具体的实现,而是使用接口。所以如果你使用依赖注入,你的依赖就不是Repository,而是IRepository。
    • 这样的? Dim usr As UrbanNow.Core.IUserRepository = New UrbanNow.Core.UserRepository
    • 他的意思是使用诸如 StructureMap/Ninject 之类的 IOC 框架来处理外部位置(引导程序)中的布线。您的控制器/模型仅引用接口。
    猜你喜欢
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    • 2016-12-15
    • 1970-01-01
    相关资源
    最近更新 更多