问题标签 [savechanges]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3960 浏览

entity-framework - 在 ADO.Net 数据服务中使用 .SaveChanges() 方法的最佳方式是什么?

有人对 .SaveChanges() 方法的使用有一些好的信息吗?

尝试在我的数据上下文对象上使用 .SaveChanges() 方法时遇到了各种问题。我从现有数据源获取数据,创建适当的 EntityFramework/DataService 对象,用数据填充这些创建的对象,将这些对象添加到上下文中,然后通过调用 .SaveChanges 保存该数据。

我想出的场景(以及与之相关的问题)就是这样......在每个场景中,我都有一个 foreach 循环,它从 DataTable 中的行获取数据并生成对象,将它们附加到上下文中他们去。(注意:通过 SetLink 调用附加的三个对象一个“成员”和两个“地址”) - 基本上,这是一种转换工具,用于从一个数据存储中获取数据并将其按摩到数据服务公开的数据存储中。

  • 在 foreach 循环结束时(即循环外)调用一次不带任何参数的 .SaveChanges()
    • OutOfMemory 错误大约 1/3 的方式(90,000 次保存中的 30,000 次) - 不确定这是如何发生的,尽管每个保存项都是对数据库的单独 SQL 调用,内存不足是什么?
  • 每个循环调用一次不带任何参数的 .SaveChanges()
    • 这有效,但绝对需要永远(90,000 次保存需要 8 小时)
  • 在 foreach 循环结束时调用 .SaveChanges(SaveChangesOption.Batch) 一次
    • 同样的 OutOfMemory 错误,但没有任何保存到数据库
  • 每个循环调用一次 .SaveChanges(SaveChangesOption.Batch)
    • 404 未找到错误
  • 每 10 个循环调用一次 .SaveChanges(SaveChangesOption.Batch)
    • 400 Bad Request 错误(偶尔)
    • 多次迭代后 OutOfMemory
  • 每次循环创建上下文一次的随机尝试次数,或者将其作为循环开始时的变量,或者将其作为可用的私有成员变量。
    • 不同的结果,无法量化,没有一个真的那么好

在进行这样的大数据加载时,从客户端对象调用 .SaveChanges() 的首选方法是什么?关于 .SaveChanges() 的工作原理,我有什么不明白的吗?谁能提供更多详细信息,说明应如何使用此功能以及通过数据服务保存数据的限制(如果有)是什么?.SaveChanges() 方法调用是否有任何最佳实践?.SaveChanges() 方法调用是否有任何特别好的文档?

0 投票
5 回答
14650 浏览

.net - 无法保存实体框架继承的类型

我已经在我的数据模型中实现了一些 table-per-type 继承(基本上有一个BaseEntity包含我的项目的所有基本信息的Employer类型和一个从BaseEntity项目继承的类型)。一切似乎都设置正确,并且在使用实体时(通过 ADO.net 数据服务或通过 Linq to Entities)我可以看到Employer类型并且事情似乎很好。当我创建一个新Employer实体并尝试保存它时,问题就开始了。

在似乎不是.AddToEmployer项目的上下文中(只有 and AddObjector AddToBaseEntity)。

如果我使用AddObject("Employer", NewEmployer),我会收到以下错误消息:

找不到实体集名称“DataEntities.Employer”。

如果我使用AddToBaseEntity(NewEmployer),我会收到以下错误消息:

无法确定相关操作的有效排序。由于外键约束、模型要求或存储生成的值,可能存在依赖关系。

我是否错过了设置继承的步骤?是否有一些特定的方法来保存继承的对象?我究竟做错了什么?我认为基本问题是我应该有一个AddToEmployer,我需要做什么才能暴露它?这似乎很奇怪,因为我可以在客户端看到 Employer 类型并且可以执行以下操作:

var NewEmployer = new Employer()- 这似乎表明我可以很好地看到 Employer 类型。

0 投票
1 回答
1947 浏览

rest - 使用 LINQ to Entities 添加和更新

我们在我们的项目中使用 L2E 和 REST,虽然我能够毫无问题地从数据库中检索数据,但我仍然无法更新或向数据库添加新记录。我想这是一个语法问题(我们对 linq 还很陌生),但我无法弄清楚。我们最初在 dataservicecontext 中加载数据,并在进行更新时将它们存储在CurrencyManager.Current绑定源中。但是,当我调用时SaveChanges,数据库中没有任何内容被修改,我不知道为什么。

例如,

加载数据:

保存数据:

我已经确认正在跟踪内存中实体的更新副本,所以我不需要调用AddObject,但我收到一个错误(“关闭的类型 Lynxphere.WindowsClient.LynxphereDataServices.Customers 没有对应的客户可设置属性。 ”)如果我尝试调用AddLink. 而且我什至不确定这一步是否必要。帮助将不胜感激。

0 投票
9 回答
14109 浏览

wpf - 如何取消用户的 WPF TreeView 点击?

我有一个带有 Treeview 控件的 WPF 应用程序。

当用户单击树上的节点时,页面上的其他 TextBox、ComboBox 等控件将填充适当的值。

然后,用户可以更改这些值并通过单击“保存”按钮保存他或她的更改。

但是,如果用户选择了不同的 Treeview 节点而不保存他或她的更改,我想显示一个警告并有机会取消该选择。

MessageBox:继续并放弃未保存的更改?确定/取消 http://img522.imageshack.us/img522/2897/discardsj3.gif

XAML...

视觉基本...

如何取消那些取消选择/选择事件?


更新:我问了一个后续问题...
如何正确处理带有 MessageBox 确认的 PreviewMouseDown 事件?

0 投票
1 回答
4087 浏览

wpf - 如何正确处理带有 MessageBox 确认的 PreviewMouseDown 事件?

之前我问过如何取消 WPF TreeViewItem.Selected 事件

回答者建议我在选择发生之前处理 PreviewMouseDown 事件。那讲得通。

我试过这样做...

XAML...

视觉基本...

这只是一种工作......

  • 如果没有未保存的更改,那么它会正常进行并执行 TreeViewThings_Selected()。

如果有未保存的更改,那么我会看到 MessageBox...

MessageBox:继续并放弃未保存的更改?确定/取消 http://img25.imageshack.us/img25/141/discard2yk0.gif

  • 如果我然后选择取消,它会取消。

  • 但是,如果我改为选择“确定”来放弃我未保存的更改,那么它无论如何都会取消——即使 e.Handled = False。它不会继续并执行 TreeViewThings_Selected()。

我认为有一个 MessageBox 以某种方式搞砸了这一事实。

我究竟做错了什么?

0 投票
2 回答
30496 浏览

c# - 如何在实体框架中回滚事务

或者这可能是自动完成的,这意味着如果发生错误,所有更改都会取消提交更改。是吗?

0 投票
1 回答
254 浏览

entity-framework - 如何将表单数据绑定到对象并在回发时丢失其值

我使用 ADO.NET Entity-Framework,我有一个数据绑定到代码文件中的实体变量的页面。

项目的层次结构是 Person.Orders 我希望用户向此 Person 实体添加/删除订单 (Person.Orders.Add(order)),问题是虽然实体尚未保存,但一旦用户创建回发,变量被处理,人及其所有命令都消失了。将实体/变量(复杂的)保存在缓存/内存/状态或其他任何东西(不保存在商店中,我只想在用户单击一般接受更改 btn 时才将项目保存在商店中,同时应该是一个好的做法我想在空中建立层次结构)?

如果我不够清楚,我将在明天提供更多详细信息,请接受我的道歉。

0 投票
2 回答
6882 浏览

wpf - 在 WPF 中处理系统关闭

如何在 WPF 中覆盖 WndProc?当我的窗口关闭时,我会尝试检查我正在使用的文件是否被修改,如果是,我必须提示用户“你想保存更改吗?” 消息,然后关闭正在使用的文件和窗口。但是,当我的窗口仍然打开时,我无法处理用户重新启动/关闭/注销的情况。我无法覆盖 WndProc,因为我正在使用 WPF 进行开发。我也尝试过使用这个示例 MSDN 代码。这就是我所做的 private void loadedForm(object sender, RoutedEventArgs e) {

在 XAML 文件上,我也使用了,Closing = "OnWindowClose"但是当我单击是/否时没有任何反应,我的应用程序没有关闭。如果我尝试使用关闭按钮再次关闭它,我会收到错误消息?为什么会这样?是因为Hook吗??在 WPF 中这个等价物是什么?

0 投票
2 回答
4447 浏览

entity-framework - 异步 ObjectContext.SaveChanges()?

我希望(Win 应用程序)SaveChangesObjectContext异步保存更改,在用户能够继续工作时为用户显示一个选取框(或可控?)进度条(我可以轻松实现)。

我基本上想覆盖SaveChanges.ObjectContext

有没有人考虑过这个?

0 投票
1 回答
2429 浏览

c# - c#将新对象添加到对象上下文返回“更新条目时出错”,主键重复条目

我在尝试将对象添加到实体框架中的对象上下文时遇到问题。

这是代码:

在 SaveChanges() 上,我收到一个 UpdateException,说键 'PRIMARY' 有一个重复的条目 '0'。确实,我的“Composantes”中已经有一个 id=0 的对象。如果我删除它,我至少可以创建一个 ID=0 的对象。我不明白的是,当一个新对象被添加到上下文中时,为什么它不采用下一个可用的 ID ???? 这与我尝试在新上下文中创建此对象之前发生的错误完全相同......这可能是因为我的 model.edmx 中缺少参数?有没有办法强制将新 id 归属于新创建的对象?

我正在使用实体框架模型连接到 mysql 数据库,该模型使用 Devart dot.connector 连接到数据库。提前感谢大家对这个简单问题的回复。

皮埃尔