我正在尝试使用Entity Framework Core在ASP.NET Core 2中使用REST API服务创建通用列表提要。我想引入一个字符串来确定哪个表用于Feed。我在初始化一个通用的DBContext.DataModel变量时遇到问题,我可以稍后将_context.Model分配给我的linq命令。这将由我的控制器调用。
public class ServiceRepository : IServiceRepository
private readonly MyDataDbContext _context
public ServiceRepository(MyDataDbContext context){
_context = context;
}
public async Task<IEmumerable<GenericFeedResource>> GetFeed(string feedType){
var feed = new ??? (What object to use?)
switch(feedType)
{
case: "Feed1": feed = _context.Model1;
break;
...
}
var data = await feed.Where(f => f.Inactive == false).ToListAync();
... var result = formatting of data
return result;
}
答案 0 :(得分:1)
如果上下文有一组表,每个表都用于实现相同基类的对象类型,则可以使用.Cast<T>()
扩展名。
IEmumerable<GenericFeedResource> feed;
switch(feedType)
{
case: "Feed1":
feed = _context.Model1.Cast<GenericFeedResource>();
break;
}