我最近关注了本教程,该教程很好地演示了如何创建一个简单的 ASP.NET MVC 4 应用程序,该应用程序首先使用 EF5 代码修改数据库的内容。我有两个问题:
- 在完整的解决方案中,没有实体的映射或域类。EF 是否有效地使用模型类自动生成这些?如果是这样,这种方法有什么缺点吗?
- 是否可以使用 nHibernate 实现类似的功能?即是否可以/建议使用传递给视图的相同类作为生成数据库模式等的模型?如果是这样,我将如何去做?
我最近关注了本教程,该教程很好地演示了如何创建一个简单的 ASP.NET MVC 4 应用程序,该应用程序首先使用 EF5 代码修改数据库的内容。我有两个问题:
请记住,本教程旨在为您提供使用 MVC4 和 EF5 完成任务的最快方法。在这种情况下,EF 将使用约定。创建数据库、设置表之间的关系、设置主键……这就是为什么根本没有映射类的原因。
在本教程中,您的 EF 实体用作域类和视图模型。这显然不是尊重SRP和SOC原则的最佳方式。但有时,它可能适合您的需求!
牢记KISS原则并避免为此在应用程序中放置太多抽象和层始终是最好的事情。如果您的应用程序像这样没问题,那就没问题了。当需要将不同层中的事物分开时,对于任何业务需求,重构都会帮助您!
EF 提供了 2 种其他方式来将您的实体映射到 DB 对象、注释和Fluent API。注释很酷,因为属性与 MVC 共享以启用客户端验证,但它有一些限制,这就是 Fluent API 提供帮助的地方。
我最后建议的是保持简单。在大型应用程序中,拥有一个单独的视图模型并将其映射到模型构建器层中的业务服务返回的域实体可能会更容易。但是对于不应该经常更改的小型应用程序,为什么不使用相同的实体作为视图模型和域,就像教程中一样?
这是我最近进行的 EF 培训的链接,您可能会找到一些有用的信息以进一步了解。