首页 文章

Linq 2 SQL:复合主键

提问于
浏览
4

我有一个带有两个外键的链接表 . 它们是 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 回答

  • 3

    你的 class 定义是正确的 . 您可以使用与编写完全相同的复合键来编写实体 . 请注意,如上所述,密钥必须由C#代码设置,并且它们不是自动递增字段 . 你告诉我这是确切的,所以这不是问题所在 .

    鉴于错误,我会说你试图插入两次相同的记录(和/或插入两次"empty"记录,然后将 PartIDParentPartID 设置为0的.NET)

相关问题