Uen*_*tee 8 c# entity-framework entity-framework-core
我一直在尝试使用EntityFramework,在遇到以下错误消息后,我尝试使用ThenInclude来解决它。
无法绑定传递给Include运算符的表达式'[x] .ModelA.ModelB'
但是现在看来我对它为什么能解决问题缺乏了解
这有什么区别:
.Include(x => x.ModelA.ModelB)
Run Code Online (Sandbox Code Playgroud)
和这个:
.Include(x => x.ModelA).ThenInclude(x => x.ModelB)
Run Code Online (Sandbox Code Playgroud)
Vij*_*han 22
“包含”适用于对象列表,但如果您需要获取多级数据,则“ThenInclude”是最合适的。让我用一个例子来解释它。假设我们有两个实体,公司和客户:
public class Company
{
public string Name { get; set; }
public string Location { get; set; }
public List<Client> Clients {get;set;}
}
public class Client
{
public string Name { get; set; }
public string Domains { get; set; }
public List<string> CountriesOfOperation { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在,如果您只需要公司和该公司的整个客户列表,您可以使用“包括”:
using (var context = new YourContext())
{
var customers = context.Companies
.Include(c => c.Clients)
.ToList();
}
Run Code Online (Sandbox Code Playgroud)
但是,如果您想要一个带有“CountriesOfOperation”作为相关数据的公司,您可以在包含如下客户之后使用“ThenInclude”:
using (var context = new MyContext())
{
var customers = context.Companies
.Include(i => i.Clients)
.ThenInclude(a => a.CountriesOfOperation)
.ToList();
}
Run Code Online (Sandbox Code Playgroud)
Kak*_*isk 18
不同之处在于 Include 将引用您最初查询的表,无论它位于链中的哪个位置,而 ThenInclude 将引用最后包含的表。这意味着如果您只使用 Include,您将无法包含第二个表中的任何内容。
| 归档时间: |
|
| 查看次数: |
1479 次 |
| 最近记录: |