问题标签 [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 回答
995 浏览

c# - C#,LINQ 批处理项 - 执行此操作的最佳方法是什么?

我有 2 个数据库 - (1) Feed,(2) Production。提要数据库是从我们每天获得的客户端文件中获取的,在我看来,它是一个只读数据源。收到提要文件后,提要应用程序会执行其操作,然后最终调用生产站点上的 Web 服务。然后,此 Web 服务会在 feed DB 和 Prod DB 之间进行同步。本质上这是伪代码:

  • 获取客户的所有 Feed 项
  • 获取同一客户的所有产品
  • 使用 LINQ for Objects,获取 (1) 导致 UPDATE 的所有项目,(2) 导致 DELETE 的所有项目和 (3) 导致 INSERT 的所有项目。
  • 流程更新
  • 处理删除
  • 处理插入

对于分隔 INSERTS、UPDATES 和 DELETES 的核心代码:

是的,我知道有更有效的方法可以做到这一点,我开始使用它们。但是,上面的代码运行速度相对较快,并将我的数据分成 3 个 List<> 集。

我的问题更多关于处理 _dbRiv.SaveChanges() 方法。当我发出它时,它似乎会触发所有 3 组(上图)。我正在尝试追踪一个唯一的密钥违规行为,并且在批处理中我没有找到违反约束的一两个记录。我确信我在思考 LINQ for SQL 的真正工作原理时遗漏了一些东西。

我想做的是:

  • 仅对更新执行保存。那就做点别的吧
  • 仅对 DELETES 执行保存。那就做点别的吧
  • 在 INSERTS 上一一(暂时)执行保存。

有没有办法一次在一批上发出 SaveChanges ?
有没有办法 foreach InsertProductList 对象并一次执行 SaveChanges 一行?我在吠叫错误的树吗?


编辑: 虽然我知道我可以从 EF 调用存储过程,但我的目的是学习如何将存储过程转换为 EF。

我用 SQL 写了我想要的东西,它就在这里(这正是我们需要的方式):

现在我正在使用实体框架(尚未完成)在代码中编写它:

我知道现在有点乱。我将其包括在内,因此如果有人对如何更好地清理它、利用 EF 执行此操作的更好方法等提出建议,我将不胜感激。我知道有一些非常巧妙的方法可以跨实体进行连接,并且我想学习而不是自责。

0 投票
1 回答
326 浏览

c# - 在 WPF 3D 转换后保存新的指标、三角形和法线

我有一个目前平躺的 3D 模型,我希望它围绕 X 轴旋转 90 度。我对变换执行此操作没有问题。但据我所知,所有的变换都是一堆矩阵相乘。我想让变换真正改变模型索引的所有坐标。应用转换后有没有办法“保存更改”?我希望能够使用 XamlWriter 类将新几何保存在 xaml 文件中,而不是以它具有旧几何然后应用变换的方式,我希望保存新坐标。

0 投票
2 回答
126 浏览

php - 是否有推荐的方法来处理保存数据以响应没有 onunload 事件的站点内导航?

序言范围我的问题:

我有一个 Web 应用程序(或站点,这是一个内部 LAN 站点),它广泛使用 jQuery 和 AJAX 在浏览器中动态加载 UI 的内容部分。用户使用导航菜单导航应用程序。单击导航菜单中的项目会对 php 进行 AJAX 调用,然后 php 返回用于填充中心内容部分的内容。

由 php 提供的其中一个页面有一个表格,其设置类似于电子表格,用户可以在其中输入值。该表始终与数据库中的数据保持同步。因此,当创建表时,它是否填充了相关的数据库数据。然后,当用户在“单元格”中进行更改时,该更改会立即写回数据库,因此表和数据库始终保持同步。这种方法是为了向用户保证他们输入的数据已被保存(长篇大论......),并减轻他们不得不点击某种保存按钮的负担。

所以,这个总是同步的想法很好,除了用户可以在一个单元格中输入一个值,而不是将焦点移出单元格,然后采取任何可能导致最后一个值丢失的操作:例如导航到通过导航菜单访问网站的另一部分,退出应用程序,关闭浏览器等。

序言结束,正题:

我最初认为这不是问题,因为我只会跟踪哪些数据是“脏的”或未保存的,然后在 onunload 事件中我会对数据库进行最后的写入。问题就在这里:由于我聪明(或不太聪明,不确定)使用 AJAX 并动态加载内容部分,当采取上述操作时,用户实际上从未离开原始 url 或页面,除了关闭浏览器。因此,onunload 事件不会触发,我又回到了丢失最后一个数据的状态。

我的问题是,当以这种方式动态加载内容时,是否有推荐的方法来确定一个人是否正在离开应用程序的“部分”?

我可以想出一个我认为的解决方案,它涉及全局变量和跟踪当前查看的页面,但我想我会检查是否有更优雅的解决方案,或者我可以在我的设计中做出改变,这将使这项工作。

一如既往地提前感谢!

0 投票
1 回答
547 浏览

c# - 实体框架:中断运行 SaveChanges

我有一个独特ObjectContext的,我在其上执行一个SaveChanges(). 此操作需要一些时间(约 60 秒)。该操作在一个线程中执行。

我的用户在屏幕上有一个“取消”按钮。
我可以停止线程,但如果SaveChanges()已经开始,我无论如何都找不到取消它。
事实上,我发现无法访问底层事务(我还有一个隔离级别问题:这个操作几乎锁定了数据库中的所有表,因此其他用户无法使用该应用程序)。

如果我关闭底层连接会起作用吗?EF 将无法发送Rollback指令,但我猜数据库无论如何都会执行它,不是吗?

我已经看到我可以使用TransactionScope它,但它需要访问 DTC,而且我的主机在编辑服务器/网络配置时性能并不高。
因此,如果存在“实体框架”解决方案,我会更喜欢那个。

0 投票
1 回答
484 浏览

.net - .Net Entity objectcontext线程错误

我有一个 n 层 asp.net 应用程序,它从我的 DAL 返回一个对象到 BAL,如下所示:

此结果通过我的业务层并到达 UI 层以显示给最终用户。我不会延迟加载以防止在我的应用程序的其他层中执行查询。

我在 DAL 中创建了另一个函数来删除对象:

当我在调用“Get”函数后尝试调用“Delete”时,收到此错误:

不允许新事务,因为会话中还有其他线程在运行

这是一个 ASP.Net 应用程序。我的 DAL 包含一个实体数据模型。我拥有上述函数的类共享相同的 _dataContext,它在我的构造函数中实例化。我的猜测是阅读器仍然从“获取”功能打开并且没有关闭。我怎样才能关闭它?

在我的 UI 层中,我遍历结果并尝试像这样删除它们:

编辑

此行发生错误:

0 投票
1 回答
928 浏览

entity-framework - 实体框架 - 初始保存很慢

我们正在使用 EF4 和 WPF 实现一个系统。我们注意到初始保存数据的问题:运行初始 SaveChanges 时,运行 context.SaveChanges() 命令时会有 4 到 6 秒的延迟。随后的每个 SaveChanges 都非常快,没有明显的延迟。这不是一个主要问题 - 但仍然是一个烦恼。

有没有人遇到过这个问题并知道解决方法?

谢谢

0 投票
0 回答
972 浏览

asp.net-mvc-2 - 实体框架持久性问题给出“ObjectStateManager 不包含 ObjectStateEntry 与对类型对象的引用..”

在我的数据库中:

我正在使用这个复合键来确保“ServiceSchedule”项的唯一性。“Previoustask”字段是所有 PK 的串联,其想法是我可以构建一个与记录相关的细粒度“ServiceSchedule”任务时间线。

上下文是:

两个 Edit 控制器操作如下所示:

直到“db.ApplyPropertyChanges”行,一切似乎都正常,我得到了错误:

我注意到传递到编辑视图的模型包含相关表中的集合(例如 CountryID 中的国家集合),但是当模型从视图返回时,它仅包含“ServciceSchedule”表中的 PK ID,没有相关收藏品。

我目前正试图通过在这样的视图中创建 hiddenfors 来解决这个问题,但似乎仍然无法将完整的模型返回到控制器中:

GetServiceSchedules 存储库也如下所示:

(使用 VS 2008、SQL 2008、MVC2)

谁能告诉我一些更多建议的补救措施?

0 投票
3 回答
7145 浏览

html - 如何保存画布绘图?

我有这个手指画应用程序,我希望我的用户可以保存他们画的东西,然后再回来继续画。

有什么更轻松的方法来做到这一点?

0 投票
2 回答
920 浏览

entity-framework - 实体框架/EF4:在事务范围内多次插入相关实体

我有一个类似的问题。

我想在同一个事务范围内进行两次插入。这些对象是相关的,并且它们之间具有 FK 关系,但出于多种原因,我不想通过导航属性连接它们,而只能通过 ID 连接它们。

这是我想要完成的简化:

问题是我得到一个 UpdateException 因为 FK 评估失败。我试图删除 FK 关系并运行完全相同的代码,它运行良好,并且两个对象都设置了正确的属性。那么为什么这种方法会失败呢?而这应该怎么做呢?同样,我不想通过它们的导航属性附加实体。

谢谢!

0 投票
2 回答
3962 浏览

.net - ObjectContext.SaveChanges() 违反主键,抛出 UpdateException?

这个 MSDN 文档中解释...

当在 ObjectContext 上调用 SaveChanges 时,实体框架会生成一条 INSERT 语句并在数据源上执行。

如果 INSERT 操作成功,服务器生成的值将被写回到 ObjectStateEntry。当在 SaveChanges 执行结束时自动调用 AcceptChanges 时,将使用新的服务器生成的值计算永久 EntityKey。

我的代码中似乎没有发生这种情况。当我调用ObjectContext.SaveChanges()时,UpdateException会抛出一个InnerException.Message值:

“重复键值违反了唯一约束 student_term_data_pkey”

这是有问题的代码:

我已验证StudentTermData.Id在我的 Entity 数据模型中标记为 EntityKey。有没有人有任何想法或建议?