使用“模型”类作为域实体

时间:2013-10-10 15:40:04

标签: c# asp.net-mvc-4 nhibernate entity-framework-5 code-first

我最近关注了这个tutorial,它很好地演示了如何创建一个简单的ASP.NET MVC 4应用程序,该应用程序首先使用EF5代码修改数据库的内容。我有两个问题:

  1. 在完成的解决方案中,实体没有映射或域类。 EF是否有效地使用Model类自动生成这些?如果是这样,这种方法有任何缺点吗?
  2. 使用nHibernate可以实现类似的功能吗?即是否可以/建议使用传递给视图的同一个类作为生成数据库模式等的模型?如果是这样,我将如何做到这一点?

1 个答案:

答案 0 :(得分:0)

请注意,本教程旨在为您提供使用MVC4& amp; EF5。在这种情况下,EF将使用Convention.来创建数据库,设置表之间的关系,设置主键,......这就是为什么根本没有映射类的原因。 在本教程中,您的EF实体用作域类和视图模型。这显然不是尊重SRPSOC原则的最佳方式。但有时,它可能适合您的需求!

始终记住KISS原则始终是最好的事情,并且为了它而避免在应用程序中添加大量抽象和层。如果你的应用程序没问题就好了。当需要将不同层次的东西分开时,为了满足任何业务需求,重构将帮助您解决问题!

EF提供了另外两种将实体映射到数据库对象的方法,AnnotationsFluent API。注释很酷,因为属性与MVC共享以启用客户端验证,但它有一些限制,这是Fluent API帮助的地方。

最后我建议的是保持简单。在大型应用程序上,可能更容易拥有单独的视图模型,并将其映射到模型构建器层中业务服务返回的域实体。但是对于不应经常更改的小型应用程序,为什么不在视图模型和域中使用相同的实体,如教程中那样?

以下是我制作的link to a recent EF training,您可能会发现一些有用的信息。