c# - EF Core 3 - 一对多关系未填充
问题描述
我有 2 个模型 - 用户和订单。一个用户有很多订单,一个订单有一个用户。
public class User
{
[Key]
public int Id { get; set; }
...
public List<Order> Orders { get; set; } = new List<Order>();
}
public class Order
{
[Key]
public int Id { get; set; }
public int UserId { get; set; }
public User User { get; set; }
...
}
我的数据库提供商是 MySQL,所以我使用的是 Pomelo.EntityFrameworkCore.MySql。
问题是 Orders 属性始终为空(或在没有属性初始化程序的情况下为 null)。我尝试过使用 ForeignKey 和 InversionProperty,但它没有帮助。
任何帮助表示赞赏。
解决方案
为了填充 Order.User 和 User.Orders,您需要调用 .Include()。例如:
this.databaseContext.Orders.Include(order => order.User).Where(...);
this.databaseContext.Users.Include(user => user.Orders).Where(...);
资料来源:https ://docs.microsoft.com/en-us/ef/core/querying/related-data
编辑:看到问题下的评论,我认为您在设置两个类之间的关系时遇到问题。在您的上下文中,您应该设置关系。这是一个例子:
protected override void OnModelCreating(ModelBuilder modelBuilder) {
modelBuilder.Entity<Order>()
.HasOne(_ => _.User)
.WithMany(_ => _.Orders)
.HasForeignKey(_ => _.UserId);
}
推荐阅读
- react-native - 在 react-native 中使用图像推送通知不起作用
- c# - 如何传播可观察序列,但前提是它以特定的值集合开始?
- python - Tensorflow NN 架构不兼容的形状
- r - 忽略 stringdist::extract 中 maxDist 的大小写
- c# - Rg.Plugin.Popup 奇怪的行为
- vue.js - 使用带有 nuxtjs 的 vue-konva 失败并出现各种错误
- javascript - 图表显示十进制数字如何显示没有小数的数字?(图表.js)
- python - 如何在 gpt2 上使用经过训练的数据
- android - crashlytics 上的常量 Dns.java 第 5 行错误
- visual-studio-code - VSCode:.md 无法识别为降价文件