问题标签 [objectcontext]

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 回答
3994 浏览

.net - 实体框架:有没有办法检查上下文是否有对象?

情况:来自过去上下文的会话中的对象不能设置为另一个对象的父对象,因为另一个对象位于新上下文中。

假设我在会话中有一个从上下文中检索到的用户。现在页面重新加载,该上下文已被解除,并创建了一个新上下文。

页面重新加载

我想做的是:

这个想法是,如果会话中的对象不属于当前上下文,则从数据库中重新加载它,以便它现在由与当前上下文中的所有其他对象相同的上下文“拥有”。(我使用每个请求的上下文)

更新

所以我暂时这样做了,直到我能更好地了解如何解决这个问题:

这个想法是查看会话中的对象(sessionUser)是否与上下文中的对象相同。现在 if 工作得很好。第一次创建上下文时,应该访问数据库并获取用户。一旦比较,很明显它们是不一样的,并且 sessionUser 现在是上下文中的用户。下次如果选中,sessionUser 和 userToCheck 是相同的。

问题仍然是:

总是命中数据库。这不是一个好的解决方案。

更多更新

嗯,毕竟这可能是答案。我忘记了这条规则:

x 是 ObjectQuery 类型的属性。当您执行 ObjectQuery 时,它总是会命中后备存储。他们就是这样做的。如果您不想执行数据库查询,请不要使用 ObjectQuery。

0 投票
1 回答
1323 浏览

entity-framework - 在 ADO.NET 实体框架 UpdateException 方面需要帮助

我的数据库中有一个联系人表和一个电话表,在电话表中有一个“ContactId”列,其中一个键将电话引用到联系人。

在服务器的关键选项中,我将其删除选项设置为“级联”。

现在,当我尝试使用上下文删除联系人时:

上面的语句引发了一个 UpdateException,让我知道联系人仍有电话记录,其 ContactId col 设置为其 ID。

现在我知道我可以手动完成并首先删除所有相关电话然后删除联系人,但我正在寻找一种更有效的方法,我希望这一切都应该自动完成。

欢迎任何建议和实践。

谢谢。

0 投票
1 回答
4178 浏览

c# - 如何通过实体键添加/删除与实体框架的多对多关系?

我试过:

当尝试使用 Remove() 而不调用 attach 之前没有抛出异常但没有删除关系。

0 投票
2 回答
4447 浏览

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

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

我基本上想覆盖SaveChanges.ObjectContext

有没有人考虑过这个?

0 投票
4 回答
5317 浏览

c# - 每组操作的可重用 ObjectContext 还是新的 ObjectContext?

我是实体框架的新手,我刚开始在空闲时间玩弄它。我遇到的主要问题之一是关于如何处理 ObjectContexts。

通常首选/推荐这些:

这个

或这个?

0 投票
2 回答
539 浏览

c# - 如何使用实体框架自动设置 DateUpdated 列?

我有一堆包含 DateUpdated 列的表。

如何在调用DateTime.Now时将这些字段自动设置为对象被持久化回数据存储时SaveChanges()

我不需要用一段代码全面完成它。我可以在所有部分类中添加事件处理程序,但我没有看到任何可以挂钩的东西。而且我宁愿将其保留在代码中,而不是将触发器添加到数据库中。

以下是我的想法:

我想我可以对 ObjectContext.SavingChanges 事件做一些疯狂的反射自动魔法,但我认为这不是最好的解决方案。

或者,我可以添加一个包含DateUpdated属性的接口,并使用具有该字段的所有类来实现它。然后使用 ObjectContext.SavingChanges 事件为实现该接口的所有已更改对象设置属性。

有任何想法吗?

提前致谢!

0 投票
3 回答
1219 浏览

c# - EF:在处理上下文后加载引用?

我正在努力使用 ADO.NET 实体框架。这是我的 ER 图:

对对象上下文的生命周期有疑问。假设我请求我的数据如下:

我得到了我所有父实体的列表。一段时间后(几小时?),用户决定他想检查哪一个。(同时,实体对象通过了应用程序的多个层。)我现在必须加载记录的所有详细信息:

这会导致 ObjectDisposedException,因为 MyParentEntity 对象已失去与创建它的对象上下文的连接。我有几种可能性来处理这个:

1) 我可以一直使用同一个 MyObjectContext 实例,并且永远不会关闭它。这会导致内存的巨大浪费。

2)每次离开“使用(上下文)”块时,我都可以手动分离()每个实体对象(及其子实体和父实体)。每次我输入一个新的“使用(上下文)”块时,我都可以附加()它们。导致很多努力。(我认为一个框架应该减少而不是增加它。)

3)每次我输入一个新的“使用(上下文)”块时,重新加载然后丢弃每个实体。导致 SQL Server 上的更多(不必要的)负载并且还浪费内存。

4)我可以在应用程序启动时加载所有详细信息和所有引用以及所有引用的所有引用以及这些引用的引用。(不讨论,这真的很傻!)

5) ...(我忘记了一个选项吗?)

现在你的大问题:我应该选择哪种方式?还有另一种我没有看到的方法吗?还是我完全误解了框架的精神?

提前致谢

更新:这是一个 Windows 窗体应用程序。

0 投票
1 回答
1959 浏览

entity-framework - 创建从 ObjectContext 继承的对象实例时出现 ArgumentException

我正在松散地关注Kazi Manzur Ra​​shid 的一系列优秀博客文章,作为学习如何实现一些新的(至少对我而言)设计模式的学习练习,但我从一开始就遇到了麻烦。

我基本上已经为Database,RepositoryBaseRepositoryBaseTests类复制了他的代码,但是当我尝试运行测试时,我收到一条错误消息

无法创建类 Booking.Infrastructure.EntityFramework.Repositories.Tests.RepositoryBaseTests 的实例。错误:System.Reflection.TargetInvocationException:调用的目标已引发异常。---> System.ArgumentException:初始化字符串的格式不符合从索引 0 开始的规范。

通过调试器,我验证了Database该类的构造函数上引发了异常,如下所示:

调用base构造函数时会引发错误,如果我对当前发送的值进行硬编码,它将如下所示:

为什么这不起作用?

0 投票
1 回答
1033 浏览

c# - 保持 ObservableCollection 和 ObjectContext 同步的最佳方法?

我有一个带有绑定到人员 ObservableCollection 的列表框的窗口(我为响应用户查询而检索的一组实体框架对象:一个搜索框),然后我具有编辑、删除和添加新功能等功能。目前我只是确保每次我从数据库中添加或删除一些东西,我也与 OC 一起工作。有没有更好的方法来处理这个?

谢谢,科汉。

0 投票
1 回答
1495 浏览

asp.net-mvc - ASP.NET MVC 中的实体框架和对象上下文生命周期

我在我的项目中使用实体框架,我遇到的问题是,一旦我将实体传递给视图(请记住,这些实体具有延迟初始化的对象,类似于:Products.Owner,其中所有者是延迟初始化的对象)我得到一个运行时异常,告诉我 ObjectContext 超出范围。

现在这是有道理的,因为我使用 using (...entities...) { .... } 语句从 Service 获取实体,这意味着它在返回结果时被释放。

我将如何解决这个问题并拥有一个从头到尾都存在的对象上下文。谢谢。