实体框架多对多CRUD

时间:2009-07-24 00:36:10

标签: entity-framework

我正在玩POC项目的Entity Framework。 在我的数据库中我有

Category<-------CategoryProduct ------->Product

(连接表是模型中的实体。)

如何选择 / 插入 / 更新删除

2 个答案:

答案 0 :(得分:13)

假设CategoryProduct表只是由两个FK组成,一个到Product,一个到Category ...... EF默认不会生成CategoryProduct个实体,而不是操纵该表,您需要使用Product.CategoriesCategory.Products集合创建/删除关系。

即。添加一行:

product.Categories.Add(category); // or category.Products.Add(product);

删除一行:

product.Categories.Remove(category); // or visa versa

查询表,即获取该表中的行:

var pc = from c in ctx.Categories
         from p in c.Products
         select new {CategoryID = c.ID, ProductID = p.ID};

并且更新没有意义,因为PK(不能更改)是所有列,即行的列都不能更新,因此行本身无法更新(当然不包括删除)。

希望这有帮助

亚历克斯詹姆斯

答案 1 :(得分:1)

有两种方法,至少有两种我能想到的方法:

  1. 每个对象都有一个实体,这很讨厌,通常很难正确接线。
  2. 编辑模型,以便将多对多关系建模为多对多关系,然后它将为您完成所有操作。
  3. 选项2是更好的方法,但目前有限制,如果您有与CategoryProduct关联的其他数据,它将无效。