代码之家  ›  专栏  ›  技术社区  ›  Peanut

在单独的程序集中使用MVC 2.0和模型

  •  4
  • Peanut  · 技术社区  · 14 年前

    我是MVC新手,尽管有很多(我的意思是很多)有用的信息,但要想清楚地了解如何使用MVC 2.0达到我的确切要求,还是很难进行校对。

    我想建立一个如下的解决方案:

    • 使用MVC 2.0项目提供Web UI。
    • 使用Linq to SQL类项目进行数据持久化。
    • 我有两个单独的代码模块,需要访问上面的linq-to-sql模型,所以我不能将linq-to-sql模型直接包含在MVC项目中。
    • 另外,在我的LinqToSQL项目前面还有一个业务逻辑层。

    我的问题是:

    • 如何设置MVC应用程序的模型部分以通过BLL指向LINQ to SQL项目?
    • 如何执行Web应用验证?我可以使用MVC 2.0模型验证吗?如果不是,有什么选择?
    • 最后一点(稍微放在一边):什么是ViewModel,它与模型有什么不同?

    有那么多问题。但这是一个令人兴奋的新技术和数据访问问题,除此之外,我必须尽快处理所有其他问题,我认为MVC 2.0非常棒。

    感谢您提供的任何建议。

    2 回复  |  直到 14 年前
        1
  •  4
  •   Steve Michelotti    14 年前

    如何设置我的模型部分 MVC应用程序指向我的Linq to 通过我的BLL的SQL项目?

    通常,您会为此使用存储库模式。您的控制器引用了您的存储库-存储库从数据库返回域对象。MVC应用程序不存在知识Linq to SQL。

    如何执行Web应用验证? 我可以使用MVC 2.0模型验证吗?如果 不是什么选择?

    将视图模型放入MVC项目中。这些视图模型可能与您的域模型紧密一致,但它们关注的是表示模型。将数据注释放在这些视图模型上进行验证—MVC框架将自动确保对这些带有数据注释的视图模型进行验证。它是可插拔的,所以您可以使用替代方案——但是对于MVC 2,它已经相当好地进行了烘焙,这包括客户端验证。

    最后(稍微放在一边)-什么是 视图模型和这有什么不同 从模型?

    我部分地回答了上面的这个问题。域模型的形状可能不是显示视图所需的形状-视图模型非常适合填补这一空白。此外,即使形状完全匹配,视图模型仍然是一个好主意,这样您就可以将UI验证代码和其他表示元数据放在那里(因为您不希望在域模型上与表示逻辑相关的任何内容)。

    这里的链接 view model patterns .

    希望这有帮助。

        2
  •  1
  •   Dave Swersky    14 年前
    1. 可以添加对从BLL程序集公开的对象的引用,并将其用作模型。

    2. 当您要向生成的类添加验证时,请使用 buddy classes .

    3. ViewModel是模型数据的自定义形状聚合。每个视图只有一个视图,因为视图模型的目的是以方便和简洁的方式精确地显示特定视图所需的数据。

    示例可能是同时包含订单和订单详细信息的视图。视图模型可以为每种类型保存对存储库和业务对象的内部引用。视图模型的属性将这些对象的数据合并在一起。

    视图模型在您的案例中也很有用,因为您希望模型位于单独的程序集中。可以将数据注释应用于视图模型属性以进行验证。您将使“原始”业务对象模型成为视图模型的内部属性,并公开公共方法来检索和持久化数据。