EntityFramework和保存单个实体

本文关键字:实体 单个 保存 EntityFramework | 更新日期: 2023-09-27 17:50:57

我正试图围绕EntityFramework以及它应该如何工作来包装我的头。我目前正在用c#开发一个桌面应用程序。. NET使用EntityFramework这个应用程序的标签非常多。所以会有一个主窗口,然后用户在应用程序中所做的一切都将在一个单独的选项卡中完成。

例如,应用程序将有Orders和Customers。

假设用户开始创建一个新订单,并在中途决定编辑一个客户(两者将显示在单独的选项卡中)。当它们尝试保存客户(在代码中,我将调用ObjectContext.SaveChanges())时,EntityFramework也将尝试保存用户仍在处理的订单。我不想这样,我只想拯救顾客。

我想我在理解EntityFramework应该如何使用时遗漏了一些关键的东西,因为它似乎不像它会在允许用户一次处理多个实体的应用程序中正常工作。

EntityFramework和保存单个实体

您可以使用多个Entity对象,但由于每个视图只能分配一个模型,因此选项卡UI仍然是单个表单,它只是隐藏选项卡元素,直到事件使它们可见。因此,在任何调用模型的视图的顶部,你会熟悉这个:

@model Web.Project.Name.Models.ViewModel

然而,您可以在每个选项卡上使用部分视图来调用您希望用户与之交互的模型,因为部分视图可以有自己的模型。通过这种方式,每个选项卡有效地变成了自己的表单。你的主页(没有布局视图):

@model Web.Project.Name.Models
@{Viewbag.Title = "Orders & Customers";}
...
<div class="tab-1">
@Html.Partial("_OrdersPartial")
</div>
<div class="tab-2">
@Html.Partial("_CustomersPartial")
</div>

你正在加载的这些部分都有自己的模型:

_OrdersPartial.cshtml:

@model Web.Project.Name.Models.OrdersViewModel
@{Viewbag.Title = "Orders & Customers";}
...

在这种情况下,用户与每个选项卡及其部分视图的交互将把每个选项卡作为自己的表单来处理,这实际上是。同样重要的是要注意,您实际上甚至不需要多个 Entity对象来创建不同的模型。您可以使用Entity框架从同一个数据库创建多个模型。

在我对EntityFramework应该如何使用的理解中,我肯定错过了一些关键的东西。或者至少是可以采取的方法。

我们的应用程序在整个应用程序中使用单个上下文。对于大型桌面应用程序,更合适的方法是每个窗口有一个上下文。这就是我现在采用的方法,到目前为止,我已经用一个表单测试过了,效果很好。

这是给我启发的博客文章的链接。http://www.progware.org/Blog/post/Entity-Framework-the-Context-ComboBoxes-and-Include-Foreign-Key-columns.aspx