我需要执行动态集类型,这是我正在尝试做的事情(伪):
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
的任何方式?
答案 0 :(得分: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服务器上执行,但在集合枚举器上,将返回整个表。仅在加载所有行时使用。