多对多的主键

时间:2016-03-02 01:17:14

标签: c# asp.net entity-framework

类别:

public class BranchAds
{
    [Key, Column(Order = 0)]
    [ForeignKey("branch")]
    public int branch_id { get; set; }
    [Key, Column(Order = 1)]
    [ForeignKey("ad")]
    public int advertisement_id { get; set; }

    [JsonIgnore]
    public virtual Branch branch { get; set; }
    public virtual Advertisement ad { get; set; }

    [JsonProperty("start_time")]
    public DateTime start_time { get; set; }

    [JsonProperty("end_time")]
    public DateTime end_time { get; set; }

    public DateTime date { get; set; }

}

此错误:

  

违反PRIMARY KEY约束'PK_dbo.BranchAds'。无法在对象'dbo.BranchAds'中插入重复键。重复键值为(1,26)。

当我尝试使用相同的键插入另一个BranchAd时发生..好吧我应该理论上这是一个多对多(联结)表。但是数据库似乎没有意识到这一点。

为什么我这样做?因为我需要多对多表中的自定义字段。

我该怎么做才能解决这个问题?无需向BranchAds类添加[Key]

1 个答案:

答案 0 :(得分:0)

如果BranchAds是您的中间表,那么我就不会在您的对象上看到任何PK定义。您是否在数据库级别强制执行复合PK约束(分支+广告)?