我通过一个实际示例学习了 ASP.Net 和 Entity Framework 4。为了试验这一点,我使用了User
发送设备的示例Repair
。他们在线创建一个帐户,添加一组Details
(地址、电话、传真等),然后RMA
在线创建退货表格 ( )。
我正在努力解决的概念是分配Details
给Returns
. AReturn
有一组Details
,一个用于联系、交付和计费。这些可以是Detail
表的外键,如下所示。
问题是,如果在线User
编辑他们的,Details
它将更新Details
. Return
这不是期望的行为。Return
应该使用Details
创建时可用的。
问题是,如何让实体框架创建一个新Detail
对象,而不是更新现有对象。也就是说,如果用户Detail
使用新的邮政编码更新 23,Detail
则不会更改 23,而是Detail
创建一个新的(即 45)。Detail
23 被从 中删除User
,新的Detail
45 被添加到User
. 虽然现有的RMA
using Detail
23 不受影响,但这意味着如果您查询,RMA
您将获得在创建时提供的详细信息。
如果在阅读这个问题时,您认为这个概念是有缺陷的,而是应该以不同的方式设计数据库(即将Detail
数据复制到表中的列RMA
,或以复合键的形式添加到Detail
表中以创建修订历史)。我也很高兴听到这些明智的话。