如何从DbContext获取所有DbSet

理查德

我需要使用EF获取数据库中的所有表。我需要他们逐个表地从每个表中提取某些信息。任何想法如何?

乔纳森·马格南

这是我在EntityFramework Plus库中使用的扩展方法。

using (var ctx = new TestContext())
{
    var dbSetProperties = ctx.GetDbSetProperties();
    List<object> dbSets = dbSetProperties.Select(x => x.GetValue(ctx, null)).ToList();
}

public static class Extensions
{
    public static List<PropertyInfo> GetDbSetProperties(this DbContext context)
    {
        var dbSetProperties = new List<PropertyInfo>();
        var properties = context.GetType().GetProperties();

        foreach (var property in properties)
        {
            var setType = property.PropertyType;

#if EF5 || EF6
            var isDbSet = setType.IsGenericType && (typeof (IDbSet<>).IsAssignableFrom(setType.GetGenericTypeDefinition()) || setType.GetInterface(typeof (IDbSet<>).FullName) != null);
#elif EF7
            var isDbSet = setType.IsGenericType && (typeof (DbSet<>).IsAssignableFrom(setType.GetGenericTypeDefinition()));
#endif

            if (isDbSet)
            {
                dbSetProperties.Add(property);
            }
        }

        return dbSetProperties;

    }
}

编辑您需要使用DbSet元素类型的反射并遍历所有属性。这不适用于TPC,TPT和TPH

对于更简单的解决方案,请使用实体框架扩展中的GetModel方法。这是该库的免费功能。

项目:实体框架扩展

文档:GetModel

免责声明:我是项目Entity Framework Extensions的所有者

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从 C# 中的 DbContext 获取任何表名作为字符串的表的 DbSet 对象

来自分类Dev

如何遍历泛型中的所有DbSet?

来自分类Dev

如何遍历泛型中的所有DbSet?

来自分类Dev

如何获取所有输出

来自分类Dev

如何获取所有查询

来自分类Dev

如何根据表名称在DbContext中选择正确的DbSet

来自分类Dev

在实体框架中,如何在没有枚举所有可能的DbSet的switch语句的情况下将通用实体添加到其对应的DbSet中?

来自分类Dev

如何获取所有父记录的所有记录

来自分类Dev

如何获取集合中所有文件的所有文件?

来自分类Dev

如何从所有文本字段获取所有值

来自分类Dev

如何从KendoGrid获取所有列名称?

来自分类Dev

如何从WooCommerce获取所有结帐字段?

来自分类Dev

MySQL,SQL如何获取所有行?

来自分类Dev

如何从NetworkStream获取所有数据

来自分类Dev

如何获取特定类型的所有部分

来自分类Dev

如何从名称空间获取所有密钥?

来自分类Dev

如何获取客户的所有交易(Python)

来自分类Dev

如何从Facebook帐户获取所有页面

来自分类Dev

如何获取所有Wikidata属性的列表?

来自分类Dev

如何从DOMDocument获取所有子节点?

来自分类Dev

Javascript如何获取表单的所有元素

来自分类Dev

如何获取表单所有字段的值?

来自分类Dev

如何从Aerospike中获取所有记录?

来自分类Dev

如何获取窗体的所有TextBox控件

来自分类Dev

如何获取数组中的所有项目?

来自分类Dev

如何获取所有子元素的输入

来自分类Dev

如何获取类型的所有方法

来自分类Dev

如何从图库中获取所有照片

来自分类Dev

如何从stepAIC获取所有变量

Related 相关文章

热门标签

归档