gpt4 book ai didi

c# - ObjectContext 上的 ObjectSet 列表和 ObjectSet 上的 EntityCollections

转载 作者:太空宇宙 更新时间:2023-11-03 20:29:05 25 4
gpt4 key购买 nike

我正在使用 EntityFramework 和 IRepository 模式,我需要向所有 EntityCollections 添加一些事件。

有没有办法获取 ObjectContext 上的集合列表?
我还需要一种方法来获取 ObjectSet/EntityCollection 上的所有集合。这可能吗?

我的最终目标是迭代所有集合和子集合,并向我的所有子集合添加一个 AssociationChanged 事件。当关系被删除时,它将调用对象上的 delete。

这弥补了EF does not support connectionless deletes的事实(至少不像它支持无连接更新和插入)。

最佳答案

您可以使用以下未经测试的代码获取 ObjectSet:

var objSetProps = instanceOfObjectContext.GetType().GetProperties().Where(prop => prop.PropertyType.IsGenericType && prop.PropertyType.GetGenericTypeDefinition() == typeof(ObjectSet<>));

foreach(PropertyInfo objSetProp in objSetProps)
{
var objSet = objSetProp.GetValue(instanceOfObjectContext, BindingFlags.GetProperty, null, null, null);
}

诀窍是在您拥有实例后使用 ObjectSet,因为它 ObjectSet 是通用的,并且当您不知道使用什么类型来定义它们时,使用通用类型的变量可能不那么明显。

关于获取对象集上的实体集合,可以采用类似的方法,但目前我手头没有这样做的例子。

关于c# - ObjectContext 上的 ObjectSet 列表和 ObjectSet 上的 EntityCollections,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8565173/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com