问题标签 [graphdiff]

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 投票
0 回答
197 浏览

c# - 如何使用 GraphDiff 更新具有抽象类型集合的实体?

我有一些模型:

上述模型的关系是这样的:

现在我想更新一个使用 GraphDiffRootEntity命名的实体:rootEntity

那么如何正确更新呢?

0 投票
1 回答
321 浏览

c# - GraphDiff 中多对一和多对多关系中的空行插入

我正在使用 GraphDiff 以及最新版本的实体框架,遵循代码优先的方法。

我正在尝试以Food这种方式更新实体:

StartObjectSlots并且EndObjectSlots是 2 个包含其他一些不相关数据的列表。InteractiveObjects包含一个类型的对象,InteractiveObject该类型是可以放置在那里的许多对象类型的基本类型。其中一种派生类型(假设IntObjDerived具有一对多属性)。现在,我正在尝试以这种方式更新以下实体:

现在,当代码被执行时,一个新的空 ActionOfUser 实体被插入到数据库中。此外,为上述实体的每个一对多导航属性插入一个新的空实体三个新配方被插入到数据库中,一个是空数据,一个是半满的,这个应该被保存。这两种情况都是不需要的,我正在努力寻找解决方案。我尝试了一些更改,但我一直坚持这一点。有什么建议么?(我知道这似乎是 2 个问题,但我想把它作为一个问题,因为它可能是数据库中相关的相同问题)。

编辑:我下载并编译GraphDiff以检查发生了什么,我注意到创建了一些空对象,除了它们的实体 ID 值。我猜这些副作用是因为实际上我在对象图中添加了一个新节点(一个新的 RecipeStep)而我不确定 graphdiff 是否完全支持这一点。

更新(tl; dr版本):我尝试UpdateGraph使用 Entity Framework 的 GraphDiff 对图形深度大于 2 的对象应用调用。根据我的尝试,似乎 GraphDiff 在深度大于 2 的图形中应用了双插入,并且需要很多时间,特别是如果添加了从数据库加载的子节点的新节点。我是否应该采用不同的方法,例如将UpdateGraph呼叫拆分为多个呼叫?

先感谢您!

0 投票
1 回答
251 浏览

c# - 插入实体不会更新键字段

我正在尝试使用 GraphDiff 将分离的实体插入数据库。

它类似于:

我的addObject功能基本上是:

当我尝试获取新添加的 Foo 的 Id 时出现问题,它仍然为空(0)。

EF 不应该将对象更新为它实际插入数据库的内容吗?我错过了什么吗?

0 投票
1 回答
387 浏览

c# - GraphDiff 也可以用于简单实体的部分更新吗?

我有一个带有 EF6 CodeFirst 的 WebApi2 项目。我还使用 AutoMapper 在我的模型和 dto 之间进行映射。我没有使用 OData。

我正在尝试找到处理实体更新的解决方案。因为我没有使用 OData,所以我不能使用 Delta,也不想使用 JsonPatch。

在我的场景中:

  1. 客户端将数据(作为 dto)发送到服务器
  2. 服务器使用 EF 从数据库加载关联的实体/实体图
  3. 服务器应使用 dto 的值修补实体
  4. 服务器保存已修补的实体,EF 应负责更改跟踪

我的问题在于3。

我可以使用 GraphDiff 来修补实体吗?(我还将使用 GraphDiff 来更新复杂的图表)。如果我可以使用 GraphDiff,EF 更改跟踪会自动启动吗?

0 投票
1 回答
176 浏览

c# - 是否应该将外部 Id 属性从 Model 映射到 Dto?

如果我有以下型号:

Dto 是否应该排除外国 ID 看起来像这样:

而当使用 Graphdiff 更新对象图时,EF 会知道 CustomerType 映射到 CustomerTypeId 吗?

0 投票
1 回答
4314 浏览

c# - 如何使用 GraphDiff 更新相关实体?

我有以下模型:

从上面,并使用 GraphDiff,我想更新客户聚合如下:

但是上面没有更新任何东西!

在这种情况下使用 GraphDiff 的正确方法是什么?

0 投票
0 回答
67 浏览

c# - 实体框架不更新一对一实体

我有这些模型:

和映射类:

我正在使用 GraphDiff 进行 CRUD 操作。

添加具有地址的新客户可以正常工作。但是,当我想通过执行以下操作删除客户的地址时:

在存储库中:

客户的地址在数据库中设置为 NULL。但是,该地址并未从数据库中删除。

这是我的映射类中的错误配置还是 GraphDiff 的行为不符合预期?

0 投票
1 回答
338 浏览

properties - 如何使用graphdiff忽略属性?

我将 EF6 与 graphdiff 和 EDMX 一起使用,并且必须忽略特定实体的属性。

我应该怎么做,因为即使获取属性插入或更新总是留下 NULL 字段?

0 投票
1 回答
459 浏览

entity-framework - 将 Moq 与 EntityFramework graphdiff 一起使用

我刚刚在使用 Moq 框架进行测试的现有实体框架解决方案中添加了 GraphDiff。我在插入和更新方法中使用 Moq 的所有测试现在都失败了,因为方法_context.UpdateGraph引发以下异常:System.NullReferenceException:对象引用未设置为对象的实例。GitHub 上的 GraphDiff https://github.com/refactorthis/GraphDiff

UpdateGraph 扩展方法: https ://github.com/refactorthis/GraphDiff/blob/develop/GraphDiff/GraphDiff/DbContextExtensions.cs

您应该如何将起订量与 GraphDiff 连接起来?

0 投票
1 回答
1292 浏览

entity-framework - 使用 AutoFac 解析具有扩展方法的类

我正在使用第三方库GraphDiff,它将扩展方法添加到 DBContext 类。我的 Context 类是从 Interface 继承的,如下所示

IoC 包含将 MyContext 注册为 IMyContext。接口没有扩展方法的签名和第三个。现在我不知道 MyContext 将如何拥有该扩展方法?如果我创建 MyContext 的对象,它具有该方法,但是当它获取 Inject 时却没有