问题标签 [self-tracking-entities]
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-4 - EF4 删除时的循环引用问题
您好我正在使用 EF 4 自我跟踪实体。我有如下三个表格(问卷、部分和页面);
因此,在 EF 模型中,问卷调查有部分,部分有页面。WhenClosedShowPageId 是一个可以为空的 int,它引用页面以显示问卷何时关闭。所有引用都有关联以保持引用完整性。
当我将所有实体标记为已删除并尝试保存时,问题就来了。如果当我检索数据时WhenClosedShowPageId 为空,则删除工作正常。如果将 WhenClosedShowPageId 设置为一个值,则 EF 无法计算出删除的顺序。这是可以理解的。但是,如果我将 WhenClosedShowPageId 设置为 null,将实体标记为已删除并保存,则会发生同样的事情。我本来希望 EF 生成一个更新语句,首先将数据库上的 WhenClosedShowPageId 设置为 null,然后让它删除实体。
我能看到解决此问题的唯一方法是自己进行两次独立保存,第一次将 WhenClosedShowPageId 设置为 null,第二次删除实体。不过,这是一个高度分层的应用程序,我不想为此创建一个特殊情况。
有没有办法解决?
达伦
entity-framework - 可以从实体框架的 ObjectStateManager 中卸载实体吗?
我在 WCF 上使用带有自跟踪实体的实体框架。
我有 2 个实体,客户和 PriceMatrix 具有多对多关系(客户可以有许多历史价格矩阵,并且可以在一组客户之间共享一个矩阵)
客户端有一个单一的 PriceMatrix,它更新并发送回服务器。服务器需要检查此 PriceMatrix 是否在其他客户之间共享,然后再选择更新它,或者复制它并更新副本。
我遇到的问题是,因为我在附加更新的 PriceMatrix 之前加载了 PriceMatrix 以检查它,所以当我调用 ApplyChanges() 时出现以下错误。
“AcceptChanges 无法继续,因为对象的键值与 ObjectStateManager 中的另一个对象冲突。在调用 AcceptChanges 之前,请确保键值是唯一的。”
如果我注释掉我的检查(因此不加载 PriceMatrix)一切正常。
我真正想做的是,在检查其状态后,卸载 PriceMatrix,然后附加我从客户端收到的更新的 PriceMatrix。
wcf - 带有 DataContracts VS 默认实体框架实体对象的 WCF 服务
将 WCF 服务与 DataContracts VS 实体框架实体对象一起使用的优缺点是什么?
如果我使用 ADO.net Self Tracking Entity Generator 生成数据合同,我的数据层中的类。
在我的 WCF 服务中使用它的最佳方式是什么?datacontract 生成的 ADO.net Self Tracking Entity Generator 将通过服务交换还是 WCF 服务仍将使用默认的实体框架对象?
entity-framework - EF4 STE 包含路径....排除路径?
上下文:存储库模式、WCF、WPF/SL
在我的自跟踪实体存储库中,我需要显式加载一些相关属性才能正确处理查询。这些不是客户要求的包含,我想摆脱它们以保持网络流量合理。到目前为止,我的解决方案是:
- 接收查询
- 负载包括回答请求所必需的
- 执行查询
- 创建临时 IEnumerable
- 迭代 4) 并再次加载所有项目,这次仅使用从客户端应用程序请求的包含路径
- 通过 WCF 返回实体
我想这样做:
接收查询
加载所有包括(基础设施加上客户请求)
执行查询
卸载“基础设施”包括
通过 WCF 返回实体
这样做的正确方法是什么?
谢谢,阿明
c# - 自我跟踪实体的目的是什么?
我一直在阅读 .net 中的自我跟踪实体以及如何从 *.edmx 文件生成它们。我正在努力理解的是,生成这些实体给你的基本 EF 实体是什么?此外,有些人提到了自我跟踪实体和 Silverlight,但您为什么要使用这些而不是客户端或 RIA 服务生成的共享类?
自我跟踪实体的意义何在?为什么要使用它们?
wcf - EF4 自我跟踪实体
我目前正在尝试在 n 层场景中使用 STE。我有一个 WCF 服务,它允许我检索对象图和/或更新对象以及允许我编辑该图的各个方面并将更改提交回服务的客户端 (WPF) 应用程序。
我的问题是这个;我检索到的对象图非常大 - 有时包括图像 - 但我的更新很少。但是,当我提交更新时,由于对象之间的关系,整个图表都会提交回服务。
例如; 给定客户/订单/订单详情场景:我检索客户及其订单和相关订单详情(3 个级别)。然后我更新一个 OrderDetail 来改变数量。我通过 WCF 方法提交要更新的 OrderDetail,该方法采用 OrderDetail 对象,但序列化遵循通过 Order 到 Customer 的关系属性,不仅序列化更改的 OrderDetail,还序列化所有 Orders、OrderDetails 和客户。
当服务调用参数被序列化时,如何阻止所有这些被传回,并且只传回要更新的对象而不遵循关系?
我可以为 STE 找到的所有示例(仍然不多)似乎旨在实际传递所有相关对象(例如在线博客/帖子示例)。
entity-framework - 自跟踪实体 - 添加到集合时尝试插入未更改的实体
使用 EF4 自我跟踪实体。
我有一个“用户”实体,其中包含用户可以属于的“组”集合。我想给这个用户添加/删除一些“组”,只给一个组 ID 列表。
此方法中的结果在 处引发错误Context.SaveChanges()
。错误报告“组”实体不允许属性null
。Name
如果我要插入新组,这是可以预料的,但这显然不是我想要做的。我该如何解决这个问题?
wcf - EF4 自跟踪实体和 WCF 序列化创建堆栈溢出
我尝试使上述配置正常工作,但没有运气。
步骤1)
我使用WCF 服务应用程序项目开始了一个新的解决方案。
第2步)
在这个项目中,我添加了一个 edmx 文件并创建了一个非常简单的模型:
Entity Parent with Id and DisplayName
Entity Child with Id and ChildDisplayName
Association from Parent to Child , 1-to-m,导致两个实体的 NavigationProperties。
我生成数据库没有任何问题。生成后,我将一个带有两个相关子对象的父对象手动插入到数据库中。
步骤 3)
我使用ADO.NET Self-Tracking Entity Generator添加了代码生成。我知道这应该在不同的程序集中完成,但为了使其简单明了,我将它们全部放在同一个项目(WCF 项目)中
第4步)
我只是更改了 IService 接口以创建一个简单的 get
在相应的实现中,我从上下文中获取一个Page对象并返回它:
问题:
如果我现在运行这个项目(Service1.svc 是起始页),VS2010 会自动生成测试客户端来调用服务。但是一旦我调用该服务,我就会得到一个 StackOverflowException!在返回对象图之前,服务器端的调试看起来没问题。
如果我删除Include("Child")一切都很好,但是现在当然缺少Child对象。
我不知道我错过了什么。我阅读了很多操作指南和指南,但都按照我的方式进行操作(至少我是这么认为的)......我在这里
尝试了 School 示例,但这对我不起作用,因为它似乎是数据库生成和示例中的编码不匹配。
所以,如果有人能指导我如何完成这项工作,我将不胜感激。
附言
- 是的,所有实体类都标记为“[DataContract(IsReference = true)]”
- 延迟加载在 edmx 文件中设置为“false”
编辑:
我将 WCF 更改为托管在控制台应用程序中,而不再托管在 IIS 中。当然,我必须编写自己的小测试客户端。
有趣的是,现在一切正常。我当然不知道为什么,但至少对于我的测试来说,这是一个解决方案......
database - 如何正确使用 EF4 导航属性?
我使用 EF4 模型优先方法创建了一个数据库。在我的模型中,两个实体之间存在 N 对 M 关系:
我已经用一些虚拟数据填充了我的数据库,包括 3 条类型Diagnosis
记录和 3 条类型记录TreatmentSchema
以及它们之间的关联。这是我用来执行此操作的代码片段:
我验证了关联确实存储在通过 EF4 的映射创建的引用表中。但是,当我稍后Diagnosis
通过集合检索 a 时,它的集合始终为空。container.Diagnoses
.TreatmentSchemas
我尝试调试 EF4 生成的代码,它所做的只是懒惰地创建所述集合,但它没有用关联的对象填充它。Ayende 的Entity Framework Profiler显示在访问该属性时根本没有生成任何查询,这让我相信我在这里做错了什么。
我怎样才能得到相关的列表TreatmentSchemas
?
.net - 如何正确地将集合保存到实体中?
我有一些里面有 EntityCollection 的对象。如果我只是添加新实体,一切都会很好。在这里执行的代码:
但是,如果我尝试更新实体,则会收到以下消息:
AcceptChanges 无法继续,因为对象的键值与 ObjectStateManager 中的另一个对象冲突。在调用 AcceptChanges 之前确保键值是唯一的。
即使使用相同的集合对象。我的意思是集合中不可能有真正相同的实体对象,因为如果它们是新的,它们就会保存到数据库中。但!如果我尝试将相同的代码应用到单独的实体到集合中,它们会被保存,但如果我尝试将它应用到对象(容器)上,则会出现此错误。
谢谢您的帮助