多对多主键

本文关键字: | 更新日期: 2023-09-27 18:37:07

Class:

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; }
}

此错误:

违反主键约束 'PK_dbo。分支广告'。无法在对象 'dbo 中插入重复键。分支广告'。重复的键值为 (1, 26)。

当我尝试使用相同的键插入另一个分支广告时发生。好吧,我应该因为理论上这是一个多对多(连接)表。但是,数据库似乎没有意识到这一点。

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

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

多对多主键

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

相关文章:
  • 没有找到相关文章