我通过一个实际示例学习了 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)。Detail23 被从 中删除User,新的Detail45 被添加到User. 虽然现有的RMAusing Detail23 不受影响,但这意味着如果您查询,RMA您将获得在创建时提供的详细信息。
如果在阅读这个问题时,您认为这个概念是有缺陷的,而是应该以不同的方式设计数据库(即将Detail数据复制到表中的列RMA,或以复合键的形式添加到Detail表中以创建修订历史)。我也很高兴听到这些明智的话。
