gpt4 book ai didi

c# - Entity Framework - 部分提交

转载 作者:行者123 更新时间:2023-11-30 12:37:12 24 4
gpt4 key购买 nike

一段时间以来,我一直想知道 Entity Framework 中是否有任何方法可以将某些更改保存到数据库中,而另一些则不能。想象一下我有 4 个实体类的情况 - 客户、任务、SalesSchema 和地址。其中每一个都是客户的一对多关系。现在我创建了一个包含 3 个选项卡的窗口(使用 TabControl),每个选项卡都有一个 DataGridView,其中列出了地址、任务和销售模式,还为每个按钮(添加、修改、删除)处理了每个实体类型的详细信息。

我想做的是允许部分更改提交到数据库,例如。用户添加一个任务 -> 它应该在用户点击保存更改时立即保存,但应该只保存事件选项卡中的更改。 (不要问我为什么要这样做——这是客户想要的)

现在通过创建单独的数据上下文并分别提交每个数据上下文来实现,但我想知道是否有另一种方法可以做到这一点 - 使用一个对象上下文。

在 ADO.NET 数据集中,有一种单独提交更改的方法 - 获取更改,做一些必要的工作人员,甚至拒绝更改。

ADO.NET Entity Framework 可以做到这一点吗?

最佳答案

我不确定我是否正确/完整地理解了您的问题,但是大多数需求都应该在一个上下文中轻松处理。下面是一个将特定类型的所有对象恢复到其原始状态的简单示例,如果您在此之后在上下文中调用 SaveChanges() - 只有处于添加或更改状态的其余对象将提交 - 部分提交。

foreach (System.Data.Objects.ObjectStateEntry x in MyEntity.ObjectStateManager.GetObjectStateEntries(EntityState.Added)) // or modified for that matter.
{
if (x.EntityKey != null)
{
if (x.Entity is MyClass) // look haven't tested this code, merely example and may have typo's
{
MyClass tmpObject = (MyClass)x.Entity;
MyEntity.Refresh(RefreshMode.StoreWins, x);
}
}
}

我想说明的一点是,如果您跟踪要“部分”提交的项目,您可以使用很多控制权。您想要恢复到原始状态或丢弃的那些可以恢复,甚至可以从上下文中完全删除。

不确定这是否有帮助。祝你好运。

关于c# - Entity Framework - 部分提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1617107/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com