我试图围绕EntityFramework以及它应该如何工作。我目前正在使用EntityFramework 4在C#.NET中开发桌面应用程序。应用程序在选项卡上很重要。因此,将有一个主窗口,然后用户在应用程序中执行的所有操作都将在单独的选项卡中完成。
因此,例如,应用程序将具有订单和客户。
假设用户开始创建新订单,并在决定编辑客户的过程中(两者都将显示在单独的标签中)。当他们试图保存客户时(在代码中我将调用ObjectContext.SaveChanges()),EntityFramework也会尝试保存用户仍在处理的订单。我不想要这个,只想拯救顾客。
我认为我在理解如何使用EntityFramework时缺少一些至关重要的东西,因为它似乎不会在允许用户一次处理多个实体的应用程序中正常工作。
答案 0 :(得分:0)
您可以使用多个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框架从同一个DB创建多个模型。
答案 1 :(得分:0)
在我理解如何使用EntityFramework时,我肯定错过了一些至关重要的东西。或至少可以采用的方法。
我们的应用程序使用单个上下文来处理整个应用程序。对于大型桌面应用程序,更合适的方法是每个窗口具有单个上下文。这是我现在采用的方法,到目前为止,我已用一种形式对其进行了测试,并且运行良好。
以下是启发我的博文的链接。 http://www.progware.org/Blog/post/Entity-Framework-the-Context-ComboBoxes-and-Include-Foreign-Key-columns.aspx