gpt4 book ai didi

c# - Entity Framework, Code First, Update独立关联(合集)

转载 作者:太空宇宙 更新时间:2023-11-03 15:38:47 26 4
gpt4 key购买 nike

为了解释这个问题,我有一个带有 Person 类的简单模型:

public class Person
{
public int Id { get; set; }

public virtual string Name { get; set; }
}

和一个包含 Persons 集合的类 School:

public class School
{
public int Id { get; set; }

public string Name { get; set; }

public ICollection<Person> Pupils { get; set; }
}

创建学校效果很好:

using (DatabaseContext ctx = new DatabaseContext())
{
Person p = new Person() { Name = "Thomas" };
Person p2 = new Person() { Name = "Markus" };
School s = new School();
s.Name = "Test";
s.Pupils = new ObservableCollection<Person>();
s.Pupils.Add(p);
s.Pupils.Add(p2);
ctx.Schools.Add(s);
ctx.SaveChanges();
}

并且在 persons 表中正确设置了 school_id 外键:

Id     Name    School_Id

1 Thomas 1
2 Markus 1

但是当我尝试添加一个新的 Pupil 时:

using (DatabaseContext ctx = new DatabaseContext())
{
Person p = new Person() { Name = "Mark" };
s.Pupils.Add(p);
ctx.Persons.Add(p);
ctx.SaveChanges();
}

数据库表中的 School_id 设置为空:

 Id     Name    School_Id

1 Thomas 1
2 Markus 1
3 Mark null

我做错了什么?我知道我可以使用外键关联,但由于我计划将个人实体与不同的相关实体一起使用,所以我更喜欢独立关联。

感谢您的帮助!

最佳答案

听起来 s 没有附加到你应该拥有的 dbcontext

s = ctx.Set<School>().Where(x => x.Id == 1).First();

请注意 1 是一个硬编码值,您应该根据应用程序上下文设置一个变量值。

另请注意,如果 Jan 的建议不能解决您的具体问题,那么他的建议很好,应该实现。

关于c# - Entity Framework, Code First, Update独立关联(合集),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30909966/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com