首页 文章

如何使用代码优先实体框架在ASP.Net MVC3中重新加载多对多导航属性

提问于
浏览
2

我试图将代码第一个实体框架与ASP.Net MVC3和POCO类一起使用 . 我目前正在努力解决当涉及的实体具有涉及多对多关系的NavigationProperty时如何从DbUpdateConcurrencyException恢复 .

假设实体名为 Player ,并具有名为 Clubs 的Navigation属性 . 玩家可以是许多俱乐部的成员,俱乐部可以拥有许多成员 .

因此,让我们说当用户正在编辑时(当然是一种分离的方式,这是一个Web应用程序),他的俱乐部成员管理员已经取消了他的一些俱乐部会员 . 在调用 SaveChanges() 时,用户代码将正确抛出 DbUpdateConcurrencyException .

我现在要做的是重新加载玩家实体,包括他的俱乐部 . 使用 dbContext.Entry(player).Reload() 重新加载播放器非常容易,但这并不会在管理员介入后使用可供他使用的俱乐部重新填充俱乐部导航属性 .

请帮忙!

2 回答

  • 1

    我之前遇到过类似的问题,我找到的最好/最简单的解决方案 - 考虑到EF决定缓存和重新加载实体 - 是创建一个全新的DbContext实例并使用它重新加载数据 .

  • 1

    这应该工作 .

    dbContext.Entry(player).Reference(a => a.Clubs).Load()
    

相关问题