.net - 将 Entity Framework 与历史数据一起使用

标签 .net entity-framework entity-framework-4 entity-relationship

我正在 .Net 4.0 中构建一个 Windows 应用程序来创建和组织电子项目。该应用程序的主要目的是记录电子元件的供应商信息(零件编号、描述、价格等)并将它们组织(关联)到项目(成品)中。要求之一是跟踪任何给定供应商项目的更改(主要是价格)和项目级别的更改,以提供组件级别和项目级别更改详细信息的时间点统计数据。

考虑到客户端部署的简单性,我决定将 Entity Framework 4 用于我的数据访问层,并将 SQL CE 3.5 用于数据库。数据访问效果很好,但是在尝试创建对象之间的关系(关联)时,该框架似乎没有任何明显的方法来使用历史数据。这是我第一次尝试使用 Entity Framework ,所以我认为这可能只是我的经验不足使我无法找到答案。这是我的基本架构:

我有 3 个主表:Project、Product 和 ProjectProduct

Project 和 Product 表各有一个 ID 列和一个 DateAdded 列,用作复合键。 ProjectProducts 表具有其他两个表中每一个的 ID,并维护实体之间的多对多关系。关系表还有一个 DateAdded 列来跟踪产品/项目关联的变化。

虽然 Entity Framework 在使用标准代码生成的数据对象维护直接(无日期标准)的关联方面似乎工作得很好,但如何让它加载时间点历史数据的关联有点令人困惑架构。本质上,我需要能够根据时间点要求(参数化加载)的日期标准加载数据对象。

有没有人做过类似的事情并且可以指出我正确的方向?

抱歉,解释太长,但在此先感谢您提供的任何帮助!

最佳答案

我实现了完全相同的事情。使用 EF4 非常容易。您基本上处理 OnSavingChanges 事件,并枚举更改的项目集,根据需要存储它们。

唯一的问题是,获取插入的项目非常棘手(除非你没有新项目的主键,我没有)我决定只跟踪更新和删除。

这篇文章向您展示了如何做到这一点,尽管我的实现要简单得多(我不喜欢在 XML 中存储更改,所以我为列创建了一个单独的表)

Implementing Audit Trail using Entity Framework - Part 1

如果您对此感兴趣,第 2 部分将展示如何进行回滚。

Implementing Audit Trail using Entity Framework - Part 2

关于.net - 将 Entity Framework 与历史数据一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6599482/

相关文章:

C# - 自用户打开我的程序后打开了哪些程序

c# - 不使用 keystore 的客户端证书

entity-framework - 工作单元和多个对象上下文

entity-framework-4 - 将SQL Server Compact与Entity Framework一起使用的连接字符串吗?

entity-framework-4 - EF CTP4 - 创建表,但不删除数据库

c# - 非根对象的 JSON 反序列化

c# - .NET 的浏览器模拟器 API

c# - EF 忽略 ON DELETE CASCADE 的流畅 API

entity-framework - 如何修复 EntityFrameworkCore 中的数据迁移错误?

entity-framework-4 - EF 代码优先 : How do I make a virtual collection private while still having it correctly create my database model?