如何删除两个动态对象之间的多对多关系?

时间:2011-08-30 16:17:58

标签: c#-4.0 entity-framework-4 many-to-many entity-framework-4.1 system.reflection

我想删除两个动态实体之间的多对多关系。

我见过使用虚拟对象的例子,但它们不是动态的。在运行时之前,我不会知道对象的集合导航属性的对象或名称。所以我不能只说,

apple.Oranges.Remove(orange)

我需要动态地做。像,

dynamicModel.dynamicCollection(collectionName).Remove(otherDynamicModel)

我不一定需要扩展方法,只需要完成工作。我怎样才能做到这一点?感谢。

(由于对象是动态的,我不知道其他哪些细节可能有用?)

1 个答案:

答案 0 :(得分:1)

我认为你最好在这种情况下使用反射:

((dynamic)dynamicModel.GetType().GetProperty(collectionName)
   .GetValue(dynamicModel, null))
       .Remove(otherDynamicModel)

或者,如果您知道它将是IList

((IList)dynamicModel.GetType().GetProperty(collectionName)
   .GetValue(dynamicModel, null))
       .Remove(otherDynamicModel)