多对多主键
本文关键字: | 更新日期: 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 约束(分支 + 广告)?