问题标签 [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.
entity-framework - GraphDiff 和 EF6.1 – 递归多对多关系
我在 GraphDiff 附加具有递归多对多关系的对象时遇到问题。我正在使用 GraphDiff 2.0.1 和实体框架 6.1.1。
该程序管理可以具有 0-n 个 RecipeLines 的食谱,其中包含指向另一个食谱的链接,该食谱是 ComponentRecipe,并且具有 RecipeLines 等等。
我将一个配方对象传递到具有 1 个配方行的存储库中,该行上的配方对象指向父级,而 ComponentRecipe 对象指向不同的配方。
当 GraphDiff 附加项目时,它返回的附加项目有 2 条配方行,它们都是相同的,并且 ComponentRecipe 指向与在自身上创建循环的配方相同的对象。
我不确定这是否是 GraphDiff 的问题,或者更可能是我的 EF 映射或 GraphDiff 映射有问题。任何帮助表示赞赏,如果您需要更多信息,请告诉我,我可以提供一个简单的程序来演示此问题。
领域模型
数据上下文
存储库
附加数据上下文日志
SaveChanges 上的数据上下文日志
c# - 使用 GraphDiff 更新多对多关系会导致错误
我在我的应用程序中使用EF code first 6.1
with.NET 4
并且在我的模型中有以下类(我剪切了图表的其他不相关部分。例如Permission
有其他导航):
我的业务逻辑适用于分离实体,因此我RefactorThis.GraphDiff 2.0.1.0
用于执行更新。我想更新一个applicationUserInApplication
对象,所以我从数据库中获取一个现有applicationUserInApplication
的SecurityRole
s 并将其作为 a 返回,View-Model
然后更新它并将其映射回applicationUserInApplication
using Automapper
(在更新操作中,我只更改SecurityRoles
a 的集合applicationUserInApplication
,这些SecurityRole
s 之前保存,我只选择它们),所以我定义了以下配置:
AppUserInApplication
并在类中定义了以下映射AppUserInApplication_Mapping
:
在上面调用后UpdateGraph()
,当我调用时_dbContext.SaveChange();
出现以下错误:
EntityFramework.dll 中出现“System.InvalidOperationException”类型的未处理异常附加信息:操作失败:无法更改关系,因为一个或多个外键属性不可为空。当对关系进行更改时,相关的外键属性将设置为空值。如果外键不支持空值,则必须定义新关系,必须为外键属性分配另一个非空值,或者必须删除不相关的对象。
[更新]
我也尝试了以下映射
但是我得到了同样的错误。
有谁知道问题出在哪里?
[更新]
我上传了我的模型的简化版本,您可以从https://www.dropbox.com/s/i9dvrb6ebd5wo7h/GraphdiffTest.rar?dl=0获取
c# - 如何组合两个表达式树体?
如果我有:
和
我想将它们组合成:
有没有办法做到这一点?
我还希望能够结合:
和:
成为:
有没有办法做到这一点?
我希望这些是相当简单的要求,但我发现很难掌握这些术语。
一些背景:
我正在使用https://github.com/refactorthis/GraphDiff来支持合并实体以进行更新。问题是它期望一个描述实体关系的表达式树被更新,例如。
我的需要是一个通用的解决方案,所以我需要使用反射检查我的实体类型的各种一对一、一对多和多对多关系,并将它们转换为表达式树。
对我的具体问题或一般帮助的任何帮助将不胜感激。
entity-framework - Graphdiff 正在删除实体
我有以下实体:
和
在我的服务方法中,当我尝试以下操作时,它会从数据库中删除不在配置文件功能列表中的功能对象:
有什么想法吗?
谢谢!
entity-framework - 在三个表上使用 GraphDiff
我有三张桌子
上下文:
当前代码:
给出这个错误:
不支持更新映射中使用的方法
有什么线索吗?
感谢和问候。
entity-framework - 具有自引用实体的 UpdateGraph
我正在使用GraphDiff和 EF 来更新从 REST 服务获取的断开连接的对象的状态。
从现在开始它工作得很好,但我遇到了自引用实体的问题。
实体:
UpdateGraph 调用:
好吧,最后一个图形调用仅更新 1 级递归性。无论递归有多深,我将如何更新?
c# - 使用 graphdiff 和实体框架设置与继承对象的外键的关联
我在更新从另一个类继承的外键上的值时遇到问题。我正在使用 Entity Framework 中的分离对象,所以我使用 graphdiff 来处理它。
我已经简化了代码以使其更易于阅读
项目类:
活动类:
冲浪活动类:
使用 graphdiff 的更新上下文:
我只能在 Activity 中关联 Company 属性,但不能关联 SurfingActivity 的天气。当我传递 SurfingActivity 的值时,Id、Name、Company 和 Comment 是否会保存在 Activity 表和 SurfingActivity 表中,但不会保存在天气中。有没有人有任何建议如何解决这个问题而不必在 Project 上创建一个包含 surfingActivity 列表的新属性
c# - 使用 GraphDiff 更新两个相关表中的数据
我有两个表,Order 和 OrderItems
Order 表有一个 OrderId 列作为主键 OrderItems 也有这个列作为外键。
对于给定的订单,如果 OrderId 为 1 并且它有两个项目,则 OrderItems 表将有两行,每行的 OrderID 为 1。
使用 EF,我用这两个表创建了一个上下文。
现在 Order 表和 OrderItems 表都有一个 Status 列。
使用 GraphDiff 我想像这样更新这个值:
这给出了以下异常:
有什么线索吗?
提前致谢。
c# - GraphDiff 重复返回的实体
我正在使用 GraphDiff 来更新复杂的对象图。我的主要实体有多个可以创建、更新或删除的子实体(graphDiff 中的 OwnedCollections)。因此,在 GraphDiff 中,当实体更新时,正在创建实体的不同副本,您必须获取此副本才能获取新创建实体的 ID 等。我遇到了以下问题:当我将实体添加到child 集合,返回的“母亲”实体有两次相同的孩子。我已经下载了代码,CollectionGraphNode 中的以下代码似乎导致了这个问题:
我知道我的问题非常具体,但 GraphDiff 是我最后希望我能够以一种简洁的方式更新我的对象。我在 EF 中不是那么好,我试图了解上述两行代码如何在列表中两次添加我的实体。我的子实体引用了父实体,这会导致额外的添加吗?有没有人遇到过类似的问题,您是如何解决的?
entity-framework-6.1 - 首次更新时优化 GraphDiff 性能(后续更新很快)
我正在从事一个具有非常复杂实体的项目。对象图在具有两个级别的树中包含大约 30 个对象(有子项的子项)。
该实体在浏览器中进行管理,并作为 Json 发送到 Web API 端点。端点将 JSON 序列化为复杂实体,然后存储库使用 GraphDiff 保存实体。
在第一次保存时,UpdateGraph 调用大约需要 12 秒,在同一实体的后续调用中,需要毫秒。
我假设图形在 EF DbContext 中按实体缓存。
有什么办法可以优化第一次通话?我们在使用 GraphDiff 时只有几个场景,也许有办法准备应用程序中使用的图形。
感谢您的帮助。