首先使用EF5模型的MV4应用程序,不使用ViewModels或Repositories

时间:2013-01-28 18:28:11

标签: asp.net-mvc entity-framework viewmodel repository-pattern ef-model-first

我正在构建一个MVC4应用程序,我首先使用EF5模型,并保持它非常简单。这不是一个巨大的应用程序,一次只能有4或5个人,并且所有用户都将在能够访问应用程序的任何部分之前进行身份验证,它只是一个地方订单 - 调度程序看到订单 - 调度员完成订单的应用程序。

基本上我的问题是,如果我的应用程序的大小和范围如此之小,我需要担心存储库和ViewModel。对域实体强类型化的任何视图都使用该实体中的所有属性。我在我的控制器中使用了TryOrUpdateModel,并且读过一些可能导致很多问题的事情,但没有关于这些问题究竟是什么的大量信息。我不想为一个非常简单的应用程序使用一个非常复杂的模式。

希望我已经给出了足够的细节,如果有人想看到我的代码只是问,我真的在这里遇到障碍,并且可以真正使用来自社区的一些建议。非常感谢!

3 个答案:

答案 0 :(得分:1)

根据我的经验,对软件解决方案的要求往往会随着时间的推移而发展,远远超出最初的要求集。

现在通过遵循架构最佳实践,您将能够更好地适应解决方案在整个生命周期内的更改。

Respository模式和ViewModel功能强大,实现起来并不困难或耗时。我建议甚至为小项目使用它们。

答案 1 :(得分:1)

是的,您仍然希望使用存储库并查看模型。这两个工具都允许您将代码放在一个地方而不是整个地方,这将节省您的时间。更有可能的是,它也可以节省你的复制粘贴错误。

此外,使用这些工具可以让您在将来更轻松地扩展系统,而不必倾注所有可读性差的代码。

分离您的顾虑将导致整体代码减少,系统效率更高,控制器/代码部分更小。查看模型和存储库不会严重干扰实现。这不像是要实现控制器工厂或依赖注入。

答案 2 :(得分:1)

ViewModels:是

在将EF实体直接传递给视图时,我只看到了坏点:

  • 您需要进行手动白名单或黑名单以防止over-posting and mass assignment
  • 从视图中意外延迟加载额外数据变得非常容易,导致选择N + 1个问题
  • 在我个人看来,模型应该密切关注视图上显示的信息,在大多数情况下(基本CRUD内容除外),视图包含来自多个实体的信息

存储库:否

实体框架DbContext已经是存储库和工作单元模式的实现。如果您希望所有内容都可以测试,只需针对单独的数据库进行测试。如果你想松散耦合,有很多方法可以使用EF而不使用存储库。说实话,我真的不了解自定义存储库的受欢迎程度。