我的问题是我正在使用的系统需要Data as IQuearable
和entityframework给我数据IQueryable
这是我需要实现的接口:
public IQueryableGetData () where T : class, IData {}
我有一个创建为context.Set(MyEntityType)的DbSet,其中MyEntityType是typeof(Entity).
我现在一直在尝试一些事情,不知道如何解决这个问题.(它的所有自动生成的代码来自codedom,但在下面做了一个测试,看它可以工作,但还没有工作)
我做了一个测试包装,问题在这里LINQ to Entities only supports casting EDM primitive or enumeration types
如果我可以做这项工作,我也可以使我的其他部分工作.
public class DbSetWrapperwhere C1Data : IData where Entity: class { public DbSetWrapper(C1AzureStoreRPContext context) { Data = context.Set ().Cast (); } public IQueryable Data { get; private set; } } public class C1AzureStoreRPContext : DbContext { static C1AzureStoreRPContext() { Database.SetInitializer (null); } // Methods public C1AzureStoreRPContext(string connectionstring) : base(connectionstring) { } // Properties public DbSet AzureStoreSubscriptions { get; set; } } public interface IAzureStoreSubscription : IData, IEntityFrameworkProvided {} public class AzureStoreSubscriptionWrapper : AzureStoreSubscription, IAzureStoreSubscription { } using (var c1 = new C1AzureStoreRPContext("opencms-sql-connection")) { var wrap = new DbSetWrapper (c1); Log.LogInformation("EF", string.Format("hello {0}", wrap.Data.ToList().Count)); }
我不想将所有数据都拉到内存并进行转换,是不是没有其他解决方案?