Joh*_*ohn 2 c# iteration reflection entity-framework
(我在这里使用 EF6)假设我有一个抽象类:
public abstract class MyContext<T> : DbContext
Run Code Online (Sandbox Code Playgroud)
让我们使用它:
public class MyTestContext : MyContext<MyTestContext>
{
public DbSet<Object1> Object1 { get; set; }
public DbSet<Object2> Object2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在,假设我想在我的抽象类中迭代 MyTestContext 中的所有 DbSet。似乎这会起作用(这是在我的抽象类中的一个方法中):
var dbSetProperties = typeof(T).GetProperties().Where(p => p.PropertyType == typeof(DbSet<>));
Run Code Online (Sandbox Code Playgroud)
然而我得到“枚举没有结果”。
我在这里做错了什么?谢谢!
编辑注意 - 我不希望预先知道泛型类型参数 - 我实际上正在寻找确定每个 DbSet 中的类型。
所以 aFoo<T>不是 type Foo<>。您需要获取Foo<T>s的泛型类型定义并进行比较。
var dbSetProperties = typeof(MyTestContext)
.GetProperties()
.Where(p => p.PropertyType.GetGenericTypeDefinition() == typeof(DbSet<>));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
879 次 |
| 最近记录: |