【发布时间】:2011-11-19 00:51:02
【问题描述】:
我已经阅读了这里的许多问题,这些问题起初似乎有类似的问题,但似乎并不完全相同。如果在某个地方回答了这个问题,我们深表歉意,但就像我说的那样,我已经阅读了很多内容但找不到答案。
我正在使用实体框架和 MVC 3。 我正在尝试将标签添加到我的实体框架中的产品,它具有多对多关系和一个表,只需使用链接表中的两个键将它们链接起来,因此 EF 将标签压缩为产品的属性。表格设置如下:
产品:ProductID [int, primary key]、名称等
标签:TagName [字符串,主键]
ProductTags:ProductID、TagName
所以要访问 ProductTags,我可以使用 product.Tags
这是我的代码:
dbProduct.Tags.Clear();
foreach (var tag in productModel.Tags)
{
Data.Tag dbTag = new Data.Tag();
dbTag.TagName = tag;
dbProduct.Tags.Add(dbTag);
}
dbProduct 是 Product 实体,Data 是命名空间。 productModel.Tags 是List<string>
当我SaveChanges() 我得到以下异常:
“违反 PRIMARY KEY 约束 'PK_Tags_1'。无法插入 对象 'dbo.Tags' 中的重复键。\r\n语句已被 终止。”
所以真正让我感动的是:它为什么要尝试向 dbo.Tags 添加任何内容?在我看来,这应该只是添加到 ProductTags 而不是标签。我没有在此方法的其他地方提及标签,因此在任何时候都不会尝试将任何内容直接添加到标签表中。感觉好像我的 EF 中设置了错误,但我想不出是什么,它是从数据库生成的。
再次抱歉,如果这很明显,我觉得很愚蠢。非常感谢任何帮助。
【问题讨论】:
标签: asp.net-mvc-3 entity-framework many-to-many