gpt4 book ai didi

entity-framework - 添加和删​​除关联 - Entity Framework

转载 作者:行者123 更新时间:2023-12-01 05:47:18 25 4
gpt4 key购买 nike

本周我正在努力掌握 EF,到目前为止我一切顺利,但我刚刚遇到了我的第一个主要障碍。我有一个项目表和一个类别表。每个项目都可以用许多类别“标记”,所以我创建了一个链接表。两列,一列是项目的主要 ID,另一列是类别的主要 ID。我手动向数据库添加了一些数据,我可以通过我的代码中的 EF 很好地查询它们。

现在我想用现有类别之一“标记”一个新项目。我有要添加的类别 ID 和项目的 ID。我使用 linq 作为实体加载,然后尝试以下操作。

      int categoryToAddId = Convert.ToInt32(ddlCategoriesRemaining.SelectedValue);
var categoryToAdd = db.CollectionCategorySet.First(x => x.ID == categoryToAddId);
currentCollectionItem.Categories.Add(categoryToAdd);
db.SaveChanges();

但是我得到“无法更新 EntitySet 'collectionItemCategories',因为它有一个 DefiningQuery 并且元素中不存在支持当前操作的元素。”

我错过了什么吗?这不是正确的做法吗?我尝试同样的方法来移除,但也没有运气。

最佳答案

我想我自己已经设法回答了这个问题。经过大量的挖掘,事实证明 Entity Framework (在 VS2008 SP1 中出现)实际上并不能很好地支持多对多关系。该框架确实通过关系从另一个对象创建了一个对象列表,这非常好,但是当涉及到添加和删除关系时,这不能很容易地完成。您需要编写自己的存储过程来执行此操作,然后使用函数导入路由将它们注册到 Entity Framework 。

此路由还有一个进一步的问题,即不返回任何内容的函数导入(例如添加多对多关系不会添加到对象上下文中)。因此,当您编写代码时,您不能像预期的那样使用它们。

现在,我将简单地坚持使用 executenonquery() 以老式方式执行这些过程。显然,VS2010 中应该会对此提供更好的支持。

如果有人认为我的事实有误,请随时纠正我。

关于entity-framework - 添加和删​​除关联 - Entity Framework ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/952368/

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