C# 如何在C中的Entity Framework Core中使用linq/lambda表达式连接两个表以创建对象的新实例?

C# 如何在C中的Entity Framework Core中使用linq/lambda表达式连接两个表以创建对象的新实例?,c#,linq,entity-framework-core,C#,Linq,Entity Framework Core,我正在ASP.NET核心Web API中使用实体框架核心和PostGreSQL 我很难找到合适的lambda/linq表达式 从查询填充字段 我可以用foreach循环来完成这个任务,但我相信有一种更有效的方法来完成这个任务 考虑下表定义: public class A { [Key] public Guid AId { get; set; } public string AName { get; set; } public Guid BId { get; set

我正在ASP.NET核心Web API中使用实体框架核心和PostGreSQL

我很难找到合适的lambda/linq表达式 从查询填充字段

我可以用foreach循环来完成这个任务,但我相信有一种更有效的方法来完成这个任务

考虑下表定义:

public class A
{
    [Key]
    public Guid AId { get; set; }
    public string AName { get; set; }
    public Guid BId { get; set; }
    [NotMapped] 
    public B BType { get; set; }
}

public class Consumer
{
    [Key]
    public Guid BId { get; set; }
    public string BName { get; set; }
    public string OtherInfo { get; set; }
}

public DbSet<A> As { get; set; }
public DbSet<B> Bs { get; set; }

public A GetAById(Guid p_Id)
{
    A result = null;

    using (Scope scope = AsyncScopedLifestyle.BeginScope(_container))
    {
        var dbContext = _container.GetInstance<FooDBContext>();
        result = dbContext.As.Where(x => x.AId == p_Id).FirstOrDefault();
        // How would I populate A->B with corresponding value from Bs Table?
    }

    return result;
}

result = dbContext.As.Where(x => x.AId == p_Id).FirstOrDefault();
如何使用Bs表中的相应值填充A->B


我假设我会进行某种选择,并将结果投影到一个新实例中?

您需要一个for循环。Linq是一个查询,不允许写入现有对象,只需创建一个新的输出。你说的“填充”是a.B null是什么意思,还是你真的想将值写入a.B?我不理解这个问题。你能展示一下你现在是如何填充它的吗?好吧,简短的回答是-删除[NotMapped]属性,让EF Core使用可用的方法之一为你填充它。否则,您为什么要使用EF Core:-/