问题标签 [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.

0 投票
1 回答
1242 浏览

entity-framework - 使用实体框架的数据库历史记录

我想在我的表中存储历史记录。

我有桌子Employee

更改时Employee,我检索原始值Id并执行isActive=False, closedDate=DateTime.Now,然后将修改后的值保存为Employee带有修改后的原始值的新值。

我怎样才能做到这一点?还有一个问题,如果我引用了另一个表Department并且还想在这个表中存储历史记录,我需要做什么。Department如果对象发生变化我该怎么办Employee

PS我使用自我跟踪实体。

0 投票
1 回答
298 浏览

wcf - 实体框架、自追踪实体和sqlserver文件流

我刚开始一个项目,我需要一个读取和写入文件的 WCF 服务。

该架构基于使用实体框架自跟踪实体的 DDD。

简单的 GUI 应该显示一个带有文件列表的网格,然后单击可以下载它的行。

我可以在此架构中使用文件流 sql server 2008 功能吗?哪种策略是管理此类实体的最佳策略?

谢谢。

0 投票
2 回答
492 浏览

.net - 自我跟踪实体与纯 POCO 与未来证明(3 层)

这显然是一个已经讨论过很多次的话题,但是我在这里的处理角度有点不同。据我了解,STE 被认为是 POCO(它不以任何方式与 EF dll 绑定),它只是在其中有一些额外的“东西”用于处理自己的更改跟踪。假设有以下应用层:

假设lazy loading不需要,并且我们在 2 层设置中运行,我的理解是使用 STE 和 POCO 之间确实没有区别。由于我们在网络上并且它是一个断开连接的环境,因此选择将是附加的 SQL 查询,Postback或者必须附加实体并将属性设置为根据需要进行修改。再次(如果我错了,请纠正我)代码看起来相同。

让我们考虑一个简单的例子,我们正在处理 webform 应用程序中的回发:

假设稍后我们被要求将架构提升到 3 层,在 Proj.Bussiness 和 Proj.Web 之间引入 WCF 传输层,我们称之为 Proj.Services。如果我们一开始就使用 STE,我们不是处于一个更好的位置吗?我们所要做的就是将调用转发到业务层,而无需以任何方式修改它或存储库:

例如,如果我们使用 POCO(假设快照),我们必须以一种必须检查该实体是否已经存在于上下文中的方式进行编码(如果我们正在运行 2 层),如果不存在(3 -tier) 附加它并将其属性设置为已修改。当您不确定将来是否需要 3 层解决方案时,似乎需要做更多的工作。另一方面,如果您一直都在针对 STE 进行编码,那么您唯一需要添加的额外不必要的(实际上并没有损害任何东西)代码就是调用 ApplyChanges()。否则,我认为您不会丢失任何东西(再次假设不需要延迟加载)。你对这个话题有什么看法?

0 投票
1 回答
161 浏览

entity-framework - MS EntityFramework:如何通过继承拆分实体?

我在数据库中有表名 Transaction。我想要 2 个子类 TransactionA 和 TransactionB。我已经按照这里的描述做到了:http ://www.robbagby.com/entity-framework/entity-framework-modeling-table-per-hierarchy-inheritance/comment-page-1/#comment-607

当我使用 T4 模板时,我生成了自我跟踪实体。

一切都很好,但只有一件事。我可以看到生成的实体 TransactionA 和 TransactionB,但在上下文对象 (ObjectContext) 中看不到它们。正常吗?如果是这样,如果只能访问 Transaction 类,我如何使用上下文从表中获取 TransactionB?

谢谢

0 投票
1 回答
239 浏览

java - 使用 Java 应用程序客户端在 WCF 客户端中使用 STE 实体

我使用实体框架(自我跟踪实体)开发了我的 DAL。我编写了一个 WCF 服务,它在这些 STE 上公开了一些 CRUDE 操作。

我想在 java 应用程序(客户端)中使用我的 WCF 服务。

STE 能否在我的 Java 客户端应用程序中正常工作?我的意思是如果 java 客户端应用程序在我的自我跟踪实体中进行了一些更改,这些更改会被跟踪吗?

0 投票
2 回答
425 浏览

c#-4.0 - Entity Framework 4.0 自跟踪加载导航属性

我有这个代码用于我的数据访问类,我想在其中加载他们应该拥有的所有患者,Patient.Addresses、Patient.Examinations、Examinations.LeftEye、Examinations.RightEye....

如何加载患者的所有相关数据?我什至没有设法加载地址。

这是当前代码:

谢谢你。

0 投票
1 回答
946 浏览

entity-framework-4 - 反序列化的实体框架对象在我的数据库中创建重复记录

我有一些从数据库中获取的 .NET 4 实体框架对象,然后我将它们序列化为 XML。然后我退出 WPF 应用程序(清除内存)。然后我重新启动 WPF 应用程序并将它们读回(反序列化)到 List<> 但从不将它们附加到任何 EF 上下文。当我在我的对象上下文中调用 SaveChanges() 时,它会创建重复的记录,但我从未将反序列化附加到上下文,所以我不确定为什么新上下文会创建记录的副本。这是否与自我跟踪实体http://msdn.microsoft.com/en-us/library/ff407090.aspx有关?

这是一个评论...

启动应用

将对象查询到 ObjectSet.ToList() _cachedRates

序列化为 XML

关闭应用程序

...{之后}...

再次启动应用程序

从 XML 文件加载对象,对象永远不会 Attach()-ed 或 AddObject()-ed 到任何上下文。

如果用户按下“保存”按钮,它会在上下文中调用 .SaveChanges()

问题:我现在的表中有两倍的匹配行

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 回答
499 浏览

silverlight - WCF、Silverlight 5、自我跟踪实体和(反)序列化

我正在开发 Silverlight 应用程序。它使用 WCF 服务在客户端和服务器之间来回传递 EF 4 Self Tracking Entities。
读取方法可以很好地从 WCF 服务将 Trackable 实体集合提供给 Silverlight 客户端。即使是基本更新也能正常工作。我可以修改“OfficeEntity”的属性,并将其作为参数传递给 WCF 更新方法。我们遇到的问题是,当我们更新实体的集合之一时,我们会收到以下反序列化错误。例如,如果“OfficeEntity”有一个导航属性“Locations”,它是“LocationEntity”的集合,我们在“Locations”属性中添加一个新的“Location”并保存,我们会得到反序列化异常。

officeEntity.Locations.Add(new Location() {LocationName = "Test 1"});

client.SaveAsync(officeEntity);

异常详情:

格式化程序在尝试反序列化消息时抛出异常:尝试反序列化参数时出错:OfficeEntity。InnerException > 消息是“反序列化 Entities.OfficeEntity 类型的对象时出错。来自命名空间>“http://schemas.datacontract.org/2004/07/Entities”的结束元素“ObjectsAddedToCollectionProperties”预期。从命名空间>“http://schemas.datacontract.org/2004/07/Entities”中找到元素“b:AddedObjectsForProperty”。

看来问题在于反序列化更改跟踪属性。关于是什么原因或我可以在哪里解决它的任何想法?

谢谢,杰森

0 投票
1 回答
880 浏览

winforms - 如何加载 Entity Framework Self Track TrackableCollection仅在需要时使用关系数据?

我使用实体框架 4 和自我跟踪实体。架构是这样的:

患者 -> 检查 -> LeftPictures -> RightPictures

所以有这两个关系的TrackableCollection Patient 1 - * ....Pictures。现在在加载客户表格和浏览详细信息时,我不需要加载这些数据图像,只有在为考试详细信息加载另一个表格时!

我正在使用类库作为数据存储库从数据库(SQL Server)和这段代码中获取数据:

现在我需要在调用考试详细信息表单时获取考试关系的所有图像(LeftEyePictures、RightEyePictures)。我想这被称为延迟加载,当我立即关闭实体连接时我不明白如何实现它,我想保持这样。

我通过应用程序使用 BindingSource 组件。

获得预期结果的最佳方法是什么?

谢谢你。