[英]Error in getting navigation property in a many to many relationship in entity framework core
[英]Entity Framework Core : populating relationship navigation property
是否有可能在 .NET 6 中使用 Entity Framework Core 6 通过设置外键值填充关系导航属性然后调用SaveChanges
?
我试过了,但似乎不起作用。 尽管另一种方法非常有效(如果我将导航属性设置为相关实体)。
截图:
尝试此操作时,调用SaveChanges
后student.department
仍为 null
var student = db.Students.Find(9);
student.departmentId = 1;
db.SaveChanges();
如果我这样做,外键student.departmentId
在调用SaveChanges
后会被填充:
var student = db.Students.Find(9);
student.department = db.Departments.Find(1);
db.SaveChanges();
尝试此 student.department 时保存更改后仍为 null
设置外键值不加载相关部门。 直接设置外键的用例通常是为了避免实际加载相关实体。
如果你想加载相关的实体,你还不如查询它并将它分配给导航属性。
在实体上设置外键属性后,如果要使用显式加载,可以加载相关实体。 例如
db.Entry(student).Reference(b => b.Department).Load();
SaveChanges
不会自动加载关系数据,除非上下文已经在跟踪相应的实体( EF Core 中的更改跟踪)。 除了使用其中一种选项来加载相关数据(例如@David Browne在其回答中建议的选项)之外,还可以使用以下方法:
db.Departments.Find(1);
var student = db.Students.Find(9);
student.departmentId = 1;
db.SaveChanges(); // student.department will be filled here
甚至
var student = db.Students.Find(9);
student.departmentId = 1;
db.SaveChanges();
db.Departments.Find(1); // student.department will be filled here
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.