如何在ASP.NETMVC中组织DAL我已经阅读了很多不同的文章,所以我仍然有一些问题要完成:我应该为数据库中的每个实体创建存储库实例,还是为所有或一个基本实例创建存储库实例,例如PostRepository可以包含像Post这样的实体,评论和标签?在控制器中,我必须获取一些数据,转换为ViewModel并将其传递给视图。去哪个地方最好?服务、控制器或其他东西?如果是服务。我应该创建多少个服务?对于每个实体,如有必要,还向Controller3或4提供服务吗?或者也许就像我想在存储库中那样做?(使用一些存储库计数创建公共服务PostService,存储库如PostRepository、CommentRepository和TagRepository)这是我的看法:我应该为数据库中的每个实体创建存储库实例,还是为所有或一个基本实例创建存储库实例,例如PostRepository可以包含Post、Comment和Tag等实体吗?拥有一个公共存储库可以为您节省大量维护工作。您可以实现单个通用存储库,例如://////此接口提供了访问数据源的抽象。///publicinterfaceIDataContext:IDisposable{IQueryableQuery()whereT:class;TAdd(Titem)whereT:class;intUpdate(Titem)其中T:类;voidDelete(Titem)whereT:class;//////允许存储库控制何时调用SaveChanges()///intSaveChanges();}并在单个上下文类中实现上述接口。有些人还实现了单独的特定存储库。在控制器中,我必须获取一些数据,转换为ViewModel并将其传递给视图。去哪个地方最好?服务,控制器或其他东西?在可从DA、服务和Web访问的单独程序集中定义所有模型(DTO或实体或POCO)类。服务方法返回模型实例,控制器将它们转换为视图模型(使用AutoMapper)并传递给视图。同样在postmethodcontroller中,首先将VM转换为Model,然后传递给Service层进行持久化或处理。如果是服务的话。我应该创建多少个服务?对于每个实体,如有必要,还向Controller3或4提供服务吗?或者也许就像我想在存储库中那样做?(创建一个公共服务。带有一些存储库计数的PostService,存储库如PostRepository、CommentRepository和TagRepository)我强烈建议您定义非常具体的服务。使用单一职责原则来定义您的服务。每个服务都应该提供一组相关的功能。例如,AuthService将对用户进行身份验证而不是向他们发送电子邮件,这是EmailService的工作。我建议的模式适用于不同的服务。例如:publicclassDriverSearchService:IDriverSearchService{privatereadonlyIBlobService_blobService;私有只读IDataContext_dataContext;publicDriverSearchService(IDataContextdataContext,IBlobServiceblobService){_blobService=blobService;_dataContext=数据上下文;}publicvoidintSaveSearch(tempstoreandcleartempstorevaritem=context.Query().Single(s=>s.SearchId==searchId);//临时对象是最新的所以更新主存储varmainSearch=context.Query().Single(s=>s.Id==searchId);mainSearch.LastExecutedOn=DateTime.UtcNow;mainSearch.DataAsBlob=item.DataAsBlob;context.Update(mainSearch);}}基本上我同意@ChrFin对你的评论发布,但无论如何我想回答你的问题。是的,但只有在你需要的时候。你应该考虑到Post实体可能有引用其他实体的虚拟属性。如果是这样,你可能不需要单独的存储库。但是,你加载相关实体时应该考虑性能问题。根据我的经验,映射到ViewModel的最佳位置是服务层或管理层-取决于你想如何调用它。我总是尽量保持控制器尽可能薄.随着应用程序的增长,您可能希望在其他应用程序(如WCF)中重用您的逻辑。如果您在控制器中有转换、业务逻辑和其他内容,您将无法共享它们。查看。如果你想避免控制器中的多重依赖(这也会影响单元测试),你应该为每个控制器创建一个服务——正如我所说,这不是规则。一个服务可能包含多个存储库。通常,您不需要与存储库一样多的服务。如果您开始开发您的应用程序,您应该在决定使用存储库模式之前检查这个有用的链接:支持查询存储库上的对象对DAL中的存储库模式说“不”以上是C#学习教程:如何使用ASP。NETMVC来组织DAL以共享所有内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
