问题标签 [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.
c# - MVC 3 - ObjectContext 实例已被释放,不能再用于需要连接的操作
一般来说,我对 C# 和 MVC 非常陌生,我一直在创建自己的小博客站点作为测试项目。尽管到目前为止大多数事情都在工作,但我在从 LINQ 查询中选择多个列时遇到了问题。只有在偶然发现关于 SO 的问题后,我才意识到我可以使用生成的实体类作为强类型模型来处理这个问题。我需要这个,因为我一直在创建一个数据库层(这也是我以前没有使用过的东西)并且试图通过该层传递匿名类型不起作用。我理解为什么会这样,所以我很满意我正朝着正确的方向前进。
但是,这种方法似乎给我带来了另一个问题。我尝试了一个简单的测试来从我的类别表中检索 2 列:CategoryID 和 Name。我最初尝试了以下方法:
当尝试迭代视图中的模型时,这给了我 ObjectContext is disposed 错误。在阅读了这个问题之后,我尝试将 return 语句移到 using 块之外并在模型上调用 AsEnumerable() ,如下所示:
但是,当我尝试迭代视图中的模型时,这仍然给我同样的 ObjectContext is disposed 错误。所以现在我不明白为什么我会收到错误。我什至尝试完全删除 using 指令,但这给了我一个不同的错误:
“无法在 LINQ to Entities 查询中构造实体或复杂类型 'MyProjectModel.Category'。”
如果有帮助,这是我认为的相关代码:
有人会善意地告诉我我缺少什么吗?
谢谢。
entity-framework-4 - 如何在存储库和工作单元模式中正确处理 ObjectContext
我正在使用 Entity Framework 4,并且创建了一个 UnitOfWork 类,该类创建我的 Context 并通过公共属性将其公开为 IContext 接口。Context 类继承自 ObjectContext 并将我的 Poco 实体公开为公共属性,例如
我还创建了一些存储库类,它们将该上下文作为构造函数参数,并在存储库类中执行查询时使用该上下文。这就是我如何一起使用整个东西:
UnitOfWork 类实现 IDisposable 接口并在其 Dispose 方法中调用 Context.Dispose()。
当我关闭我的应用程序时,我的数据库中的打开连接消失了,所以我的问题是:这里发生了什么?:-) 我应该如何在我的 UnitOfWork 类中正确处理 Context (ObjectContext) 实例以关闭我的数据库中打开的连接?
asp.net-mvc-3 - 为什么这会引发 NULL 值异常?
出于某种原因,我在db.SaveChanges();
指令中收到以下错误:
控制器代码:
我已经通过调试器并确认正在填充 UserID。
更新:
我已尝试更改db.AddToPortfolios(portfolio);
为,db.Portfolios.AddObject(portfolio);
但仍然遇到同样的问题。
Portfolios
是一个ObjectSet
,我应该使用该Attach()
方法吗?
c# - C# 实体框架每个 HttpContext 仅使用一个 ObjectContext
在 ASP.NET MVC 2 中,使用 Entity Framework 4,我收到此错误“IEntityChangeTracker 的多个实例无法引用实体对象”。
搜索 SO 表明这可能是因为我有不同的实体框架 ObjectContext 实例,而每个 HttpContext 应该只有一个 ObjectContext 实例。
我有这段代码(在我加入之前很久就写好了)似乎就是这样做的——每个 HttpContext 都有一个 ObjectContext。但我经常收到“IEntityChangeTracker”异常,因此它可能无法按预期工作:
我检查了这段代码,它看起来是正确的。据我所知,它为每个 HttpContext 返回一个 ObjectContext 实例。代码错了吗?
如果代码没有错,为什么我会得到“一个实体对象不能被多个 IEntityChangeTracker 实例引用”异常?
编辑:显示 ObjectContext 的处理方式:
entity-framework - ObjectContext.Connection.BeginTransaction() 是否使用 MSDTC?
我想确认实体框架的 ObjectContext.Connection.BeginTransaction() 方法返回的事务是否使用 MSDTC(Microsoft 分布式事务协调器)的支持?
有没有办法在不支持 MSDTC 的情况下使用事务?
entity-framework - 全局 ObjectContext 还是本地的?
我从实体框架和存储库模式开始。我对 ObjectContext 感到困惑。每次我们需要它时实例化它会更好吗?我是这样使用的:
c# - 同时使用 ObjectContext 和 DbContext
场景:试图从一个数据库中提取和重新排列信息到另一个数据库。DB A 有一些我想获取的数据。我想以稍微不同的结构将它存储在 DB B 上。
DB AI 使用 EDMX 数据库生成的模型,因此它使用 ObjectContext 的派生。DB BI 想被代码生成。所以我通过包管理器安装EntityFramework 4.1来使用代码/模型优先的方法。所以 DB B 使用 DbContext 派生
当我尝试将信息从 DB A 存储到 DB B 时,它说:
测试方法 RoutIT.Irma.Import.Service.Test.ImportIrma2ProductTests.ImportProducts 抛出异常:System.ArgumentException:找不到“DB A 的 EDMX 模型中的某些实体”的概念模型类型
在将 DB B 实体添加到 DB B 的 Derived DbContext 的 DbSet 属性时,它实际上是这样做的。所以代码就像
它发生在上面箭头标记的代码点(“<--”)
FirstPVC 是 DB B 的属性,但在箭头处,它抱怨没有属于 DB B 上下文的实体的概念模型。
这很奇怪,因为我尝试将 DB B 实体存储到 DB B 上下文中。为什么要关心 DB A 的实体。
所有上下文都包含在同一个项目中。但是 DB B 的 Derived DbContext 只知道它自己的 DbSet<> 属性,突然在尝试向 DbSet<> 属性添加一些东西时,它给了我上面粗体字的错误。
有人知道为什么会这样吗?为什么 DbContext 应该关心另一个上下文的实体,特别是 ObjectContext 派生类之一。
也许注意到它抱怨的实体看起来有点像这样是有用的
entity-framework-4 - 将在 ObjectContext.Add 中使用 Parallel.ForEach 的好处
我正在使用具有通用存储库模式的实体框架。我使用以下方法添加对象。
我也在考虑扩展它以支持多个实体。
在上述场景中使用Parallel.ForEach
而不是循环会有实际好处吗?foreach
也因为我SaveChanges()
直到循环结束才调用,如果有一个主键违规,它会被扔到循环内还是什么时候SaveChanges()
被调用?我可以回滚更改吗?
c# - Entity Framework 4 - 在生成的实体中嵌入 ObjectContext 引用
我是 Entity Framework 4.0 的新手,在 C# 中使用它,目前正在试验它的功能。
我注意到的是,与大多数类似的 ORM 一样,它依赖于 Context 对象来处理在生成的实体上完成的数据操作和 CRUD 语句生成。
这意味着如果我想将更改保存回数据库,我总是需要能够访问对已实例化实体的 ObjectContext 的引用。
如果上下文是在可访问范围(例如,相同的方法)中创建的,那很好,但是如果我将实体或实体集传递给方法并希望此方法保存更改怎么办?看起来唯一简单的方法是将 ObjectContext 与参数一起传递。
另一种解决方案是将 ObjectContext 放在某种全局变量中。不用说,我发现这两种方法都存在样式和可维护性问题。
简而言之,我能想象的最好的方法是从实体或实体集中获取对 ObjectContext 的引用。我知道默认情况下这是不可能的。
我找到了一种显示添加扩展方法以从实体获取 ObjectContext 的方法。但是,它仅适用于具有关系的实体,并且根据作者的说法,调用此方法的成本很高。
我正在考虑修改 T4 模板以向我的所有实体添加一个 Context 属性,并在实体的实例化时自动填充它。
我已经修改过一次 T4 模板,让 Entity Framework 在我生成的类上强制执行 Max Length(按照 Julie Lerman 的 Programming Entity Framework 4 书)。到目前为止,我不能说我真的很喜欢 T4 语法,但如果这是最好/唯一的方法,那就这样吧……
有没有人已经这样做了?处理这个问题的最佳方法是什么,并愿意分享他的 T4 模板或解释什么是最好的部分方法或事件来完成这项工作?
使用这种方法有什么重大缺点吗?我在想,如果我的一些实体仍在范围内,那么对 ObjectContext 的这么多引用可能会阻碍/延迟它被 GC 重新收集的能力,但实际上我不再使用 ObjectContext。
非常感谢。