我正在玩一个POC项目的实体框架。 在我的数据库我有实体框架多对多CRUD
Category<-------CategoryProduct ------->Product
(当连接表是在模型中的实体。)
我该怎么办选择/插入/更新或删除在这?
我正在玩一个POC项目的实体框架。 在我的数据库我有实体框架多对多CRUD
Category<-------CategoryProduct ------->Product
(当连接表是在模型中的实体。)
我该怎么办选择/插入/更新或删除在这?
假设CategoryProduct
表只是由两个FKS一个Product
和一个Category
... ...的EF默认情况下将不会产生CategoryProduct
实体,而不是操纵该表,您将需要创建/删除使用关系Product.Categories
或Category.Products
集合。
I.e.添加一行:
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(不能改变)是所有的列,即没有行的列可以被更新,所以行本身不能被更新(当然不包括删除)。
希望这有助于
亚历克斯·詹姆斯
有两种方式,至少有两个我能想到的:
方案2是更好的办法,但目前有局限性,如果你有与CategoryProduct有关的其他数据也不起作用。
感谢。这就是我所做的。删除了中产阶级。所以在模型中它是一个多对多的类别产品消失了。 – Shuaib 2009-07-24 03:03:00
谢谢亚历克斯。但是,我怎样才能结束产品的专栏? 我收到此错误: 一个实体对象不能被多个IEntityChangeTracker实例引用。 的代码是: 公共静态INT更新(产品C) { 使用(SimvideoEntities CTX =新SimvideoEntities()){ ctx.Attach(C); Common.SetModified(ctx,c); return ctx.SaveChanges(true); } } – Shuaib 2009-07-24 02:57:36