【问题标题】:MVC4 ViewModel - Add data to 2 tables in one transactionMVC4 ViewModel - 在一个事务中将数据添加到 2 个表中
【发布时间】:2013-04-17 14:24:40
【问题描述】:

我正在为一个项目使用 MVC 4 和实体框架。当我想创建一个由 ProductType 组成的产品时(产品类型由 ProductCompany 组成)。所以我有 3 个表(实际上是 2 个,因为产品公司表仅用于选择公司),我想做的是通过“创建产品”表单一次性添加产品和产品类型。

我读到我必须使用 ViewModel 技术,但我不知道它是否能满足我的需求。

有什么帮助吗?如果有什么不清楚的地方,请尽管说出来。

【问题讨论】:

  • 在这种情况下,听起来您将 View Model 的想法与数据联系得太紧了。您可以拥有一个混合了用于两个或三个表的数据的视图模型,当您将数据保存到数据库时,您可以进行单独的插入。
  • 那么在这种情况下我应该使用视图模型吗?还是只是创建一个“混合视图”?
  • 希望我能在这里得到条款。据我了解,视图模型是视图的数据模型。如果您使用的是 EF,EF 会创建一个类,如 Product,它可以直接对应于数据库中的 Products 表。您项目的 EF 部分是模型(不一定是视图模型)。因此,您可以拥有一个具有您的表单的视图。当表单发布时,可以在 C# 类对象中捕获表单数据。该 View Model 对象的属性可用于创建一个或多个 EF 对象,而这些对象又可以写入数据库。
  • 老实说,您的问题需要更加具体。就我个人而言,我认为这个问题表明严重缺乏对您所谈论的内容的研究。也许如果您考虑您要解决的特定问题和您正在使用的实际技术 - 例如,说明“MVC4”的栏没有 C# 示例代码。您正在尝试做的示例代码将帮助人们为您提供更好的答案。

标签: c# asp.net-mvc mvvm viewmodel


【解决方案1】:

没有“ViewModel 技术”之类的东西。视图模型只是一种模式。这个想法是,与其直接传递您的实体的视图,它通常具有比您在视图中需要的更多的数据并且同时缺少您在视图中可能需要的某些数据,而是创建一个“视图模型”,这只是另一个POCO 仅包含您的视图所需的数据。您从您的实体填充视图模型的数据,但它不必与您的实体具有所有相同的字段,并且通常会有对您的实体没有意义的附加字段,例如要使用的SelectList带有DropDownFor

【讨论】:

    猜你喜欢
    • 2021-08-25
    • 2014-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-11
    • 2010-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多