我有一个带有两个外键的链接表 . 它们是 table 的主要关键 . 我想在Linq中映射这个:
[Table(Name = "PartToPart")]
public class PartToPart
{
[Column(Name = "PartID", IsPrimaryKey = true )]
public int PartID { get; set; }
[Column(Name = "ParentPartID", IsPrimaryKey = true)]
public int ParentPartID { get; set; }
}
我假设这是错误的,并使Linq假设两列都是他们自己的主键?如果我尝试将新条目保存到此表,我会收到约束违规错误:
违反主键约束...无法在对象dbo.PartToPart中插入重复键 . 重复的键值是......
我尝试通过INSERT查询手动插入键,并且工作正常,所以我假设我的表设置正确 . 奇怪的是,无论错误消息如何,插入都有效 .
我查了the docs对我来说听起来应该像我一样工作:
如果使用此属性指定类的多个成员,则该键称为关联列的组合 .
对此有何帮助?谢谢 .
1 回答
你的 class 定义是正确的 . 您可以使用与编写完全相同的复合键来编写实体 . 请注意,如上所述,密钥必须由C#代码设置,并且它们不是自动递增字段 . 你告诉我这是确切的,所以这不是问题所在 .
鉴于错误,我会说你试图插入两次相同的记录(和/或插入两次"empty"记录,然后将
PartID
和ParentPartID
设置为0的.NET)