首页 > 解决方案 > 实体框架 - 如何在没有视图模型的情况下更新多个表

问题描述

实际上,当用户单击“保存更新”时,我想更新许多表。因此用户所做的所有更改(添加/删除/更新)都将在 web api 中处理。我不想使用视图模型,因为我的上级说它有点重复我在 Angular 中所做的模型。任何想法?

标签: entity-frameworkasp.net-web-api

解决方案


好吧,让我们从概念层面来看这个。

因为你有一个保存按钮,这意味着你已经有了一个表单,并且你有 Angular 模型,当然是 JavaScript 模型。该表单上必须有一个提交按钮,并且您可以访问 Angular 应用程序中的所有数据。到目前为止,您不需要后端的任何东西。

接下来,您需要将数据提交到 WebAPI。我们正在谈论从前端应用程序到后端应用程序的传输。WebAPI 有端点,它们采用模型来捕获数据。如果不完全相同,这些模型将非常接近您的前端模型。这并不意味着您不应该拥有它们。

当您构建一个混合不同堆栈的系统时,确实会发生类似模型以不同格式存在于多个位置的情况。

有一些处理它的方法,你可以有一个过程,当你编译你的 MVC 应用程序时,你添加一些步骤来自动为你生成 JavaScripts 模型,所以它不是全部手动的,但最终你仍然需要如果您想对您的代码有任何合理的意义,请使用双方的模型。

归根结底,您将需要 Angular 端的模型和 WebApi 端的模型。您还需要以某种方式使它们保持同步。

我会和其他人聊天并解释这些事情。

如果你不想在未来陷入这样的境地,你可以坚持经典的 MVC 做事方式。

例如,您不需要使用 Angular。我并不是说这个决定是错误的(这完全取决于它对项目的帮助有多大,并且有充分的理由将其混入其中),但您现在所处的情况是其直接结果。MVC 有自己的方式来构建使用后端模型的表单,因此它不需要特定于 JavaScript 的表单。

当然,您可以完全消除后端模型并简单地从提交的表单中获取数据(WebApi 可以做到这一点),然后您可以简单地将这些数据传输到您的实体框架 DTO,但这太麻烦而且很容易犯错误,所以我不会使用它。


推荐阅读