如何在entityframework中动态更改dbset

时间:2016-06-26 06:27:59

标签: c# entity-framework

我有一个应该在差异集上运行的查询,如何在查询中为每种类型更改dbset

我的尝试:

    using (TestContext rpContext = new TestContext(connectionString))
        {
            IEnumerable<TargetType> query = null;
            dynamic TargetSet = null;

            switch (basicDefinitionType)
            {
                case MyEnumType.MySet:
                    TargetSet = Convert.ChangeType(TargetSet, typeof(DbSet<MySet>));
                    TargetSet = rpContext.MySet;
                    break;
                default:
                    throw new Exception("can not detect type");
            }

            var q = from r in TargetSet
                    where (nodeId == null ? r.ParentId == null : r.ParentId == nodeId)
                    orderby r.Code
                    select r;
            query = (IEnumerable<TargetType>)q.ToFullyLoaded();

            return query;
        }
    }

1 个答案:

答案 0 :(得分:0)

您可以使用DbSet作为csharpfolk提及,但这可能是repository pattern可以使您的代码更具可读性和可维护性的情况。在内部,存储库模式应该使用DbSet,但它会从使用它的代码中抽象出来。