【问题标题】:In EntityFramework how do you reload entities in a Many to Many relationship?在 EntityFramework 中,如何在多对多关系中重新加载实体?
【发布时间】:2011-01-04 04:37:54
【问题描述】:

首先我使用的是 .Net 3.5 SP1。我有几个相关的实体如下。
一个Engineer 有很多Appointments
一个Appointment 有很多Engineers
一个Timeslot 有很多Appointments
我在我的数据访问层中提供了撤消/放弃对实体所做的更改的功能。我这样做是通过调用...

ObjectContext.Refresh(RefreshMode.StoreWins, Entity entity);

这适用于实体本身和任何一对多关系,如Timeslot,但不会恢复对多对多关系的任何更改。

由于目前我的DiscardChanges() 函数位于基类中,我将如何解决对多对多关系的更改,最好是在通用庄园中?

【问题讨论】:

  • 您是否尝试过使用集合而不是单个实体的刷新的重载?
  • 这将撤消对实体对象集合的更改,但我需要做的是在我的多对多关系中恢复相关实体的原始集合。由于某种原因,刷新不这样做。
  • 我也有同样的问题。在我看来,微软没有像 SaveChanges() 一样在 ObjectContext 中包含神奇的 Refresh(rm RefreshMode) 方法,这应该是相反的,比如所有被跟踪对象的 DiscardChanges。如果您在研究中有任何消息,请留言,同时您可能还想看看social.msdn.microsoft.com/forums/en-US/adodotnetentityframework/…

标签: c# entity-framework .net-3.5 many-to-many objectcontext


【解决方案1】:

这有点令人费解,但这有助于我刷新 M2M 关系:

myengineer.Appointments.Clear();
context.AcceptAllChanges();
myengineer.Appointments.Load();

【讨论】:

  • M2M? O.o 和男性对男性的关系一样吗? (O.o)
猜你喜欢
  • 1970-01-01
  • 2016-04-16
  • 2017-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-31
相关资源
最近更新 更多