带有实体框架的ASP.NET MVC4
我正在为具有不同数据库的多租户应用程序设计一个带有MVC4 Web应用程序的ASP.NET,以供不同的客户使用。
我打算使用实体框架,因为我是新手,我有以下问题,假设我遵循数据库优先模型。
还需要生成EDMX文件吗? 换句话说,在EDMX中生成的实体模型是否足够了?还是需要创建另一层实体模型并将其映射到数据库?
实体概念模型应该放在我的应用程序架构中? 我可以在一个单独的项目中使用我的所有模型(数据库模型,视图模型)吗?
多租户将与父“客户”对象或类似的东西是相同的数据库,您是否构建一个多实例应用程序(不知道它是否与您的问题相关,但基于您如何部署应用程序的重要区别)?
尽可能简单地回答您的其他问题:
从与NHibernate和EF竞争获得“不信任投票权”的日子开始,实体框架已经走过了很长一段路。 4.x用很多选择改变了你的结局,不幸的是很多文章引用了4.x,所以当你使用MVC 4时,你很可能会编写5.0版本,并且一些例子对于起床并跑步。
EF Julie Lerman写了很多关于EF,Dbcontex和EF Code First的书籍。
您可以跳过创建一个EDMX文件,优点和缺点来做到这一点。 如果你是核心编码人员,你希望开发POCO类,然后把它连接起来与你的数据库交谈,那很好。 或者,您可以使用EDMX。 您可以使用Model first,Migrations等其他变体。
Code First is for both flexibility of whether you have an existing database or do not have a database.
我个人喜欢有许多项目替换我的“DAL”是一个ProjectName.Data项目查看存储库模式(最终是工作模式单元)。
你不想让业务逻辑和代码渗入你的控制器。 SRP(单一责任原则)保持你的控制器瘦。 Nerddinner和其他一些互联网上的MVC项目试图创造一个体面的结构。 MusicStore http://mvcmusicstore.codeplex.com/和Contoso http://contosontiermvc.codeplex.com/,虽然他们有一个mvc3主体结构,但您将会对如何构建数据有很好的了解。
您可以通过尝试从现有数据库创建实体框架来从数据库生成。 (我认为你右键单击一个新模型的表面并从数据库生成)
他们可以居住在一个不同的项目中,是的