分配列表时,将相关实体替换为新实体

发布于 2025-02-10 13:49:57 字数 859 浏览 0 评论 0原文

假设我有一个实体student,它具有相关的实体

我需要逻辑来分配新的,它将替换现有class

我正在使用实体框架,并且这些类映射到数据库,因此当dbcontext.savechanges时()被执行,它应该用新记录替换旧记录。

这是为此的一种伪代码 - 具有addrange() works的版本,但具有classe = newClasses.tolist();>的版本, - 添加了新类,但没有删除旧的。

谁能解释为什么仅分配列表没有删除旧记录?

public class Student 
{
    public List<Class> Classes { get; set;}

    public void UpdateClassesA(ICollection<Class> newClasses)
    {
        //this just adds new classes, but doesn't remove the existing ones (when EF SaveChanges is performed)
        Classes = newClasses.ToList();
    }

    public void UpdateClassesB(ICollection<Class> newClasses)
    {
        Classes = new List<Class>();
        Classes.AddRange(newClasses);
    }
}

Let's say I've got an entity Student and it has related entities Classes.

I need logic to assign new Classes that would replace existing Classes

I'm using Entity Framework, and these classes are mapped to a database, so when DbContext.SaveChanges() is executed, it should replace old records with the new ones.

Here is sort of a pseudo code for this - the version with AddRange() works, but version with Classes = NewClasses.ToList(); - adds new classes but does not remove the old ones.

Can anyone explain why just assigning a list is not removing the old records?

public class Student 
{
    public List<Class> Classes { get; set;}

    public void UpdateClassesA(ICollection<Class> newClasses)
    {
        //this just adds new classes, but doesn't remove the existing ones (when EF SaveChanges is performed)
        Classes = newClasses.ToList();
    }

    public void UpdateClassesB(ICollection<Class> newClasses)
    {
        Classes = new List<Class>();
        Classes.AddRange(newClasses);
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文