gpt4 book ai didi

c# - 如何迭代泛型中的所有 DbSet?

转载 作者:行者123 更新时间:2023-11-30 20:35:50 25 4
gpt4 key购买 nike

(我这里使用的是 EF6)假设我有一个抽象类:

public abstract class MyContext<T> : DbContext

让我们使用它:

public class MyTestContext : MyContext<MyTestContext>
{
public DbSet<Object1> Object1 { get; set; }
public DbSet<Object2> Object2 { get; set; }
}

现在,假设我想在我的抽象类中迭代 MyTestContext 中的所有 DbSet。似乎这可行(这是在我的抽象类中的方法中):

var dbSetProperties = typeof(T).GetProperties().Where(p => p.PropertyType == typeof(DbSet<>));

但是我得到“枚举没有结果”。

我在这里做错了什么?谢谢!

编辑注意 - 我不希望预先知道泛型类型参数 - 我实际上是想确定每个 DbSet 中的类型。

最佳答案

所以一个Foo<T>不是 Foo<> 类型。您需要获取 Foo<T> 的通用类型定义并进行比较。

var dbSetProperties = typeof(MyTestContext)
.GetProperties()
.Where(p => p.PropertyType.GetGenericTypeDefinition() == typeof(DbSet<>));

关于c# - 如何迭代泛型中的所有 DbSet?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37484106/

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