我一直在阅读Pro ASP .NET MVC框架书,我对很多事情感到很困惑。我一直在努力做一些研究,但我发现有这么多不同的方法和概念被抛向我,这只是让事情变得更糟。
所以我有几个问题:
我知道MVC应该将功能分为三个主要部分:模型 - >控制器 - >视图。 MVC与三层架构不同吗?或者我仍然应该考虑在我的项目中创建数据访问层和业务逻辑层?
什么是存储库?它是什么作为我的数据访问层?存储库在哪里/如何适合MVC?
本书讨论了如何使用LINQ to SQL与数据库进行交互,但它指出将来不支持LINQ to SQL,并且Microsoft正在为实体框架删除它。实体框架在哪里适合MVC以及如何与它进行交互?
在此先感谢您的帮助!
马特
是的,我认为MVC是一种不同于我认为你在这里所说的“3层”架构的方法(你主要创建3个项目DAL,BL和UI的架构)。 MVC背后的主要思想是分离每个组件(模型,视图和控制器)之间的关注点。控制器是负责处理用户请求的组件,并且在大多数情况下,它与“模型”组件一起组成,以便将所需视图显示为对用户请求的响应。这与传统的3层架构之间的区别在于,DAL和BL现在被分组并命名为Model和 是的,你仍然需要创建这些组件。
什么是存储库?
马丁福勒 提到存储库的定义为 “使用类似集合的接口访问域对象,在域和数据映射层之间进行调解” 存储库是数据访问层的一部分,它们不会自己访问数据,它们在域和数据映射实体之间进行调解,当然它们应放在模型文件夹/项目中。
Linq to SQL会被弃用吗?
没有 同样的书也是这样说的,Damien Guard(ADO.NET团队的开发人员)在他的一篇博客文章中提到Linq to SQL将包含在.NET 4.0中。
如何与EF互动?
就像你使用Linq to SQL一样。与Linq to SQL一样,Entity Framework将成为您的映射实体,并且也将驻留在Model项目中。
希望这可以帮助!
我猜你对这些事情有点困惑,他们 是 让人感到困惑,让我们慢慢来看看。
N层架构和MVC是不同的,但交织在一起。 N-Tier通常谈论分离数据访问,业务逻辑和用户界面。但是,有些人可能会认为不可能将BLL与UI完全分开; MVC解决了这种问题,即有一个相应的Controller与你的BLL和你的View对话,而不是让你的View直接与你的BLL对话。
是的,拥有存储库是获得DAL的一种方法。有很多方法可以做到这一点,你不应该局限于书中讨论的内容。
本书仅使用LINQ to SQL以尽可能快的方式演示ASP.NET MVC,但这不是唯一的方法。 停止考虑LINQ to SQL一分钟;无论你使用像NHibernate这样的ORM,还是使用普通的ADO.NET + DAL Factory或其他什么,你都可以使用ASP.NET MVC - 那些你将无法使用的是那些ASP.NET ObjectDataSources
您可以使用UI拖放。
至于实体框架,布拉德艾布拉姆斯写了一篇很好的指南 如何在ASP.NET MVC中使用Entity Framework,这应该涵盖你的最后一个问题。
HTH