问题标签 [dbcontext]

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 投票
1 回答
1107 浏览

entity-framework-4.1 - DbContext Generator - 为另一个命名空间中的模型配置

参考EF 4.1 DbContext Generattor - 将实体放在不同的项目中?,要让 DbContext 使用另一个命名空间中的实体需要什么?我是否需要编辑 DbContext 模板(如果需要,如何编辑?)还是需要编辑 .edmx?

0 投票
1 回答
1182 浏览

entity-framework - 如何防止 EF 重新插入其他 dbcontext 的对象?

我在 MVC 3 项目中使用 EF 4.1,但在插入对象时遇到问题。我也在使用会话来保留一些对象。具体来说:

我有一个具有父子关系的简单类:

发起人基于 CurrentUser。在我的应用程序中,我将 CurrentUser 存储在 http 会话中。现在,当我添加这样的事件时,用户(和所有相关对象)将使用新的主键再插入一次。

当我检查用户的状态时,它也被“添加”了,尽管主键不是 0 并且 EF 应该知道它已经是持久的。如何在不向我的持久性代码中添加大量内容的情况下解决此问题。我是否必须在每次请求时将我的当前用户重新附加到新的 dbcontext?这将导致数据库代码“泄漏”到我的应用程序中。我想将数据库内容保存在数据层中。我正在使用这样的存储库:

0 投票
2 回答
1175 浏览

asp.net-mvc-3 - Asp.net mvc EF4.1 DbContext 和服务层

在服务层中公开 DbContext 是一种不好的做法吗?

例如:

在这里,IDatabaseFactory 可以返回我的 DbContext 对象。我在这里公开它是因为如果我需要 SkillLevels 以外的其他实体,以便我可以在这个服务类中使用它们。如果您知道,对于需要选择多个表来获取数据的复杂查询。

但我不确定这是否是一个不好的做法!

任何帮助表示赞赏。谢谢。

0 投票
2 回答
14938 浏览

entity-framework - 实体框架,代码优先,更新与独立关联的“一对多”关系

我花了很长时间才找到解决下面描述的场景的方法。看似简单的事情,却被证明是相当困难的。问题是:

使用实体框架 4.1(代码优先方法)和“独立关联”如何在“分离”场景(在我的情况下为 Asp.Net)中为现有的“多对一”关系分配不同的端。

该模型:

我意识到使用 ForeignKey 关系而不是独立关联是一种选择,但我更喜欢在我的 Pocos 中没有 ForeignKey 实现。

客户有一个或多个目标:

一个目标有一个客户:

Customer 派生自 Person 类:

EntityBase 类提供了一些通用属性:

上下文:

0 投票
3 回答
13008 浏览

asp.net-mvc - 在 MVC 中实例化和处置 DbContext 的最佳方法是什么?

MVC 3 + EF 4.1

我在两种处理 DbContext 的方法之间进行选择:

  1. 实例化Application_BeginRequest,放入 HttpContext.Current.Items配置中Application_EndRequest
  2. 创建一次性 UnitOfWork (kindof wrapper for DbContext)并开始每个控制器动作using(var unitOfWork = new UnitOfWork()) { ... }

请分享您的经验:您更喜欢哪一个?每种方法的优缺点是什么?

0 投票
2 回答
2120 浏览

asp.net-mvc-3 - 使用 ValidateEntity 实现唯一约束会给出“字典中不存在给定键”错误

在尝试使用 EF CodeFirst/Mvc3 为我的数据库实现唯一密钥验证时,我发现了这篇文章http://blogs.msdn.com/b/adonet/archive/2011/05/27/ef-4-1 -validation.aspx举例说明了如何通过使用IValidateObject我的对象模型来做到这一点:

和压倒一切DbEntityValidationResult ValidateEntity

以及控制器上的动作

但我得到了错误:"The given key was not present in the dictionary."对于线

似乎正在调用对象上的 Validate,该对象在覆盖 ValidateEntity 代码中设置之前访问“上下文”。

起初我认为它可能是 ModelState.Isvalid 太早触发验证,但事实并非如此。

任何人都知道我在这里缺少什么或我做错了什么?提前致谢。

0 投票
1 回答
6479 浏览

entity-framework-4.1 - 在 Entity Framework 4.1 中更改实体的状态

假设我们有一个 Customer 对象,它有一个 Order 对象。Order 对象具有 OrderDetail 对象。

现在当我改变客户的状态如下:

这只会保存 oCustomer 对象,而不是 oCustomer 中的 Order 和 OrderDetail。由于 context.Entry(oCustomer).State = EntityState.Modified 仅更改 oCustomer 的状态,而不更改 Order 和 OrderDetail。目前,我必须手动更改 ObjectGraph 中每个实体的状态,以便保存更改。有没有办法改变整个 ObjectGraph 的状态而不仅仅是父实体?是否有任何扩展方法或任何其他方法可以做到这一点?

0 投票
2 回答
1828 浏览

entity-framework - WCF、实体框架 4.1 和实体的状态

我正在开发一个将公开 WCF 服务的应用程序。我在 DAL 使用实体框架 4.1。问题是当我加载一些实体时(假设一个具有 Order 的客户又具有 OrderDetail)。加载后,我对 Customer、Order 和 OrderDetail 对象进行了一些更改(添加了一些新订单,删除/更新了一些现有订单)并将对象图发送到 WCF 服务以更新它,如下所示。

现在,当我在服务器端收到更新的客户对象图时,我不知道哪个订单被删除,哪个订单被修改,因为现在没有更改跟踪。如何确定要删除的订单和修改的订单?有什么方法可以在 Entity Framework 4.1 中跟踪我的对象图的变化?

注意:以前我使用自我跟踪实体解决了这个问题,但我不得不摆脱 STE,因为我的 WCF 服务也将被 Java 客户端应用程序使用。因此,STE 不是我的选择。

0 投票
1 回答
4072 浏览

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 派生类之一。

也许注意到它抱怨的实体看起来有点像这样是有用的

0 投票
2 回答
221 浏览

repository - 使用 StructureMap 初始化 FakeRepository<> 而不是 Repository<>

我有以下存储库界面

然后我有以下从上面的接口继承的 Repository 类

我创建了一个 FakeRepository<>,它也继承自 IRepository<>

Repository 和 Fake 之间的唯一区别是,我没有使用 LinqToSQL DBContext,而是创建了一个用于测试目的的假数据库。

然后我在单元测试中能够做的是:

所以我的测试将始终针对内存中的 fakedbcontext 运行。

但是我得到结构映射错误 104 插件类型错误,我不知道为什么?