将实体框架与历史数据结合使用

2023-12-29

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

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

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

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

虽然实体框架似乎可以很好地使用标准代码生成的数据对象来维护直接(无日期条件)的关联,但如何让它加载时间点历史数据的关联有点令人困惑架构。本质上,我需要能够根据时间点要求的日期标准加载数据对象(参数化加载)。

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

抱歉,解释很长,但提前感谢您提供的任何帮助!


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

唯一的问题是,获取插入的项目非常棘手(除非您可以接受没有新项目的主键,而我则不然)我决定只跟踪更新和删除。

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

使用实体框架实施审计跟踪 - 第 1 部分 http://www.codeproject.com/KB/database/ImplAudingTrailUsingEFP1.aspx

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

使用实体框架实施审计跟踪 - 第 2 部分 http://www.codeproject.com/KB/database/ImplAudingTrailUsingEFP-2.aspx

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将实体框架与历史数据结合使用 的相关文章

随机推荐

  • 在傅立叶插值的上下文中返回函数的“传统”符号

    在数值分析中 我们学生有义务在 R 中实现代码 给定函数 f x 找到其傅立叶插值 tN x 并计算插值误差 f x t N x int 0 2 pi f x t N x 2 或各种不同的 N 我首先尝试根据以下公式计算 d 系数 d fr
  • C#:实时组合框更新

    我一直在尝试将文本文件加载到组合框中 然后创建一个按钮将我在组合框中所做的任何更改保存回文本文件 问题是 当我在组合框中输入某些内容时 所选的 项目 不会更新 我可以更改句子 但是一旦单击 保存 按钮 这也会更新组合框 它就会回到我编辑之前
  • 以 root 身份启动 Mysql

    我已经以 root 身份在我的测试服务器上启动了 mysql 我已经添加了 user root my cnf 中的行 由于我希望测试服务器升级到生产服务器 因此我想注释掉这一行并重新启动 有没有什么副作用 预期数据丢失 MySQL 的 ro
  • 出现错误:没有为一个或多个必需参数给出值

    下面是我的更新查询 它工作正常 但是当我添加时int DrId在参数字段 最后 检查条件条件 在此之后它向我显示以下错误 No value given for one or more required parameters 错误在哪里 因为
  • Node.js 在 openshift 中的部署

    我试图将 Node js 应用程序部署到 openshift 如此链接所示here http myapp jeewan rhcloud com 我理解这段代码 var http require http var server http cr
  • Sqlalchemy 如果表不存在

    我编写了一个模块 用于创建一个空数据库文件 def create database engine create engine sqlite myexample db echo True metadata MetaData engine me
  • 使用 RxJava 的状态机?

    我正在尝试全力以赴地使用 RxJava 并解决我遇到的这个问题 但它似乎非常不适合它 因为 RxJava 似乎不想处理任何类型的状态 而只是传递事件并改变它们来处理它们 我尝试用 RxJava 模拟的基本状态机行为是这样的 在应用程序启动事
  • 无法使用nodemailer发送html文本

    我无法使用 nodemailer 在邮件中发送 html 文本 exports send function req res console log req query var mailOptions to req query email s
  • 检查服务器上是否存在文件

    我正在尝试检查服务器上是否存在 ASP NET 网页后面带有 C 代码的文件 我知道该文件确实存在 因为我事先用一段代码将其放在服务器上 任何人都可以看到为什么找不到该文件 这是代码 wordDocName specifications C
  • Google Contacts API asp.net 设置和授权令牌

    是否有任何好的示例展示如何填写应用程序设置来创建请求设置 这是代码google https developers google com google apps contacts v3 using Google Contacts using
  • Python 中是否缓存了常量计算?

    假设我在 Python 中有一个函数 它使用一个常量计算的浮点值 如 1 3 def div by 3 x return x 1 3 如果我重复调用该函数 是否会自动缓存 1 3 的值以提高效率 或者我必须手动执行以下操作 def div
  • 创建主从表和对话框,如何重用相同的对话框来创建和编辑

    我正在尝试创建一个对话框 该对话框将用于创建对象和更新对象 因此 如果我碰巧单击 新建 按钮 我将看到一个包含要填充的空字段的对话框 或者如果我单击某个条目的编辑按钮 该条目的数据将显示在对话框中进行更新 按照 primefaces 展示版
  • 如何定义向量结束以便它不会无休止地继续下去?

    目前我有一个文本文件 其中包含与不同音乐剧艺术家有关的信息 David Byrne 1 Talking Heads Lead Vocals Chris Frantz 1 Talking Heads Drummer Tina Weymouth
  • 大多数现代系统中堆栈增长的方向是什么?

    我正在准备一些 C 语言培训材料 我希望我的示例适合典型的堆栈模型 Linux Windows Mac OSX PPC 和 x86 Solaris 和最新的 Unix 中的 C 堆栈朝什么方向发展 堆栈增长通常并不取决于操作系统本身 而是取
  • 全局执行上下文是否可以从执行堆栈中弹出?

    当JS代码开始运行时 全局执行上下文被创建并位于执行堆栈的底部 以 容纳 全局变量对象和 this 如果整个JS代码运行完后执行栈为空 并且没有全局执行上下文 我们如何仍然能够访问全局变量 例如 我正在运行一个带有 JS 代码的 html
  • 一个类可以扩展一个类并实现一个接口吗

    PHP 中的一个类可以同时扩展一个接口和另一个类吗 基本上我想这样做 interface databaseInterface public function query q public function escape s more met
  • 将 log4j 1.x 和 log4j 2 与依赖于 log4j 1.x 的第三方库混合

    我正在维护一个使用 log4j 1 x 和大型代码库的 Maven 项目 log4j 1 x不仅在现有代码中使用 项目所依赖的一些第三方库也使用它 我现在想开始使用 log4j 2 但我想知道是否值得这么麻烦 我知道可以将两者混合使用 参见
  • 在WPF中,我可以在2个按钮之间共享相同的图像资源吗

    我想在 WPF 中创建一个开 关按钮 并且希望它在用户单击它时使用图像更改其外观 如果它是打开的 则切换为关闭 如果它是关闭的 则切换为打开 我将要使用的图像添加到资源中
  • 无法获取店铺名称

    在以前的版本中我用来获取当前商店名称是这样的 router get api app async ctx gt let shop ctx session shop 但是 在新版本中 我无法使用 ctx session shop 获取当前商店名
  • 将实体框架与历史数据结合使用

    我正在 Net 4 0 中构建一个 Windows 应用程序来创建和组织电子项目 该应用程序的主要目的是记录电子元件的供应商信息 零件号 描述 价格等 并将它们组织 关联 到项目 成品 中 要求之一是跟踪任何给定供应商项目 主要是价格 的更