C# 如何在C中的Entity Framework Core中使用linq/lambda表达式连接两个表以创建对象的新实例?
我正在ASP.NET核心Web API中使用实体框架核心和PostGreSQL 我很难找到合适的lambda/linq表达式 从查询填充字段 我可以用foreach循环来完成这个任务,但我相信有一种更有效的方法来完成这个任务 考虑下表定义: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
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:-/