2

我需要执行一个动态集类型,这就是我想要做的(伪):

var type = GetSetType(); //System.Type
var set = context.Set(type);
var results = set.ToArray();

我知道这肯定行不通,Enumerable例如。方法仅适用于泛型IEnumerable,但我尝试set.AsQueryable().Cast<object>().ToArray()了,并NotSupportedException抛出了一个:“LINQ to Entities 仅支持转换 EDM 基元或枚举类型。” .

有什么方法可以执行非泛型DbSet

4

1 回答 1

4

我应该删除我的问题,因为答案太简单了,但为了记录,让我们继续保持下去。

namespace System.Linq
{
  public static class EntityFrameworkExtensions
  {
    public static IEnumerable<object> AsEnumerable(this DbSet set)
    {
      foreach (var entity in set)
        yield return entity;
    }
  }
}

用法:

var collection = context.Set(entityType).AsEnumerable();

请注意,对重新调整的集合执行的任何过滤都不会在 SQL 服务器上发生,但在集合枚举器上,将返回整个表。仅在加载所有行时使用。

于 2013-07-05T01:13:45.890 回答