我正在 .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(使用前将#替换为@)