C# 如何使用一个实体框架调用加载多个结果集?
在学习实体框架6时,我遇到了一个障碍,不确定如何处理这种情况。在制作API时,用户可能需要一个需要访问多个表的特定端点(伪实体,因为它没有真正的表关联)。下面是一些假的数据库集和一个随机类 我正在寻找一种方法,将所有这些表数据(带有Where子句)都包含在一个查询中。我分别打了3个电话,但我不认为这是最好的方式C# 如何使用一个实体框架调用加载多个结果集?,c#,entity-framework,entity-framework-core,C#,Entity Framework,Entity Framework Core,在学习实体框架6时,我遇到了一个障碍,不确定如何处理这种情况。在制作API时,用户可能需要一个需要访问多个表的特定端点(伪实体,因为它没有真正的表关联)。下面是一些假的数据库集和一个随机类 我正在寻找一种方法,将所有这些表数据(带有Where子句)都包含在一个查询中。我分别打了3个电话,但我不认为这是最好的方式 var anonObject = new AnonClass() { SometItems = await Context.Table1.Where(t => t.Som
var anonObject = new AnonClass()
{
SometItems = await Context.Table1.Where(t => t.Something == true).ToListAsync();
SometItems2 = await Context.Table2.Where(t => t.Something == true).ToListAsync();
SometItems3 = await Context.Table3.Where(t => t.Something == true).ToListAsync();
};
DbSet<Table1> Table1;
DbSet<Table2> Table2;
DbSet<Table3> Table3;
public sealed AnonClass
{
public IEnumerable<Table1> SomeItems;
public IEnumerable<Table2> SomeItems2;
public IEnumerable<Table3> SomeItems3;
}
var anonObject=newanonclass()
{
SometItems=wait Context.Table1.Where(t=>t.Something==true.toListSync();
SometItems2=wait Context.Table2.Where(t=>t.Something==true.toListSync();
SometItems3=wait Context.Table3.Where(t=>t.Something==true.toListSync();
};
DbSet表1;
DbSet表2;
DbSet表3;
公众密封的安全套
{
公共数字项目;
公共IEnumerable someitems 2;
公共IEnumerable SomeItems3;
}
每一个都是单独的电话,我希望它们都在一个电话里。我认为这是不可能的。我的意思是,如果不能
UNION
它们,你怎么能用一个SQL查询得到三个独立的结果集呢?@Brian在实体框架领域,这将是一个可怕/危险的想法。DbContext不是线程安全的。@Brian我认为您没有意识到它是如何工作的。上述代码中只有一个DbContext。您需要注入3种不同的上下文才能使您的想法发挥作用。@KennethBean该问题从未得到确认,已经解决,并且适用于旧版本的core。它也与DbContext是暂时的没有任何关系。@KennethBean不,我们说您的代码是可以的,并且没有办法用一个db调用(在EF核心中)来完成。忘掉它,继续前进。我认为那是不可能的。我的意思是,如果不能UNION
它们,你怎么能用一个SQL查询得到三个独立的结果集呢?@Brian在实体框架领域,这将是一个可怕/危险的想法。DbContext不是线程安全的。@Brian我认为您没有意识到它是如何工作的。上述代码中只有一个DbContext。您需要注入3种不同的上下文才能使您的想法发挥作用。@KennethBean该问题从未得到确认,已经解决,并且适用于旧版本的core。它也与DbContext是暂时的没有任何关系。@KennethBean不,我们说您的代码是可以的,并且没有办法用一个db调用(在EF核心中)来完成。忘掉它,继续前进。