C# 类似审计的资产跟踪的模式定义(实体框架)

C# 类似审计的资产跟踪的模式定义(实体框架),c#,database-design,entity-framework-5,C#,Database Design,Entity Framework 5,我在设计模式中实体之间的关系时遇到问题。问题是,每个资产(投影仪、笔记本电脑等)的用途/位置都可能发生变化(除其他事项外),如果我想获得这些价值中最新的价值,那么目前将涉及大量的连接等。。。。为了跟踪这些更改,我定义了如下模式: 这意味着资产状态表示使用资产,即被借出、送去修理。每个资产状态负责记录资产的位置、货架(如适用)和用途。但是,如果我使用这种方法,并且我想使用AssetID=1获取资产的当前用户,我需要加入资产、资产状态,然后按日期排序并选择最上面的一个,然后使用用户加入该资产以获取

我在设计模式中实体之间的关系时遇到问题。问题是,每个
资产(投影仪、笔记本电脑等)的用途/位置都可能发生变化(除其他事项外),如果我想获得这些价值中最新的价值,那么目前将涉及大量的连接等。。。。为了跟踪这些更改,我定义了如下模式:

这意味着
资产状态
表示使用
资产
,即被借出、送去修理。每个
资产状态
负责记录
资产的位置、货架(如适用)和用途。但是,如果我使用这种方法,并且我想使用
AssetID=1
获取
资产的当前用户,我需要加入资产、资产状态,然后按日期排序并选择最上面的一个,然后使用
用户
加入该资产以获取其名称

理想情况下,我希望资产能够保留与之相关联的最新用途、位置、货架和用户。我意识到这可以通过将这些关系添加到资产中来实现,然后在为资产创建新的AssetInstance后,在我的代码中适当地更新资产列

对我来说,这似乎远远不够理想,我想知道是否有更好的方法来做到这一点


谢谢:)

我想你可以从另一个角度看设计
比如说,
AssetInstance
是一种对货架、位置和用途的重新分配。因此我更喜欢调用表
Transaction
重定位事务

由于货架、位置和用途是
资产的自然属性,我们将在资产表中列出它们之间的关系最后位置、货架和用途保存在资产表的这些外键中。
重新定位事务表包含重新定位的历史记录,因此当资产重新定位时(甚至可能在资产创建的第一个位置),我们将在其中插入一行。
我认为为交易建立一个基本表是个好主意,可能需要对资产采取进一步的行动进行跟踪和报告,如资产缺货、出售
模型草稿应该是这样的:

希望这能有所帮助。

+1这是一种我没有想到的方法,尽管我希望将目的、货架和位置存储在资产中(与您所做的完全相同),然后将所有交易保持在“资产状态”。仅仅因为人们可能会搜索数据库并拥有一个AssetInstance表,这就简化了这一过程。