我需要执行动态集类型,这就是我想要做的(伪):
var type = GetSetType(); //System.Type
var set = context.Set(type);
var results = set.ToArray();
我知道这肯定行不通,Enumerable
前任。方法仅适用于通用 IEnumerable
s,但我尝试过 set.AsQueryable().Cast<object>().ToArray()
,以及 NotSupportedException
抛出:“LINQ to Entities 仅支持转换 EDM 基元或枚举类型。”。
执行非泛型的任何方式 DbSet
?
最佳答案
我应该删除我的问题,因为答案太简单了,但为了记录在案,我们就继续吧。
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 Server 上,但在集合枚举器上,将返回整个表。仅在加载所有行时才使用。
关于entity-framework - 执行非泛型 DbContext.Set?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17479272/