类:多对多主键
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; }
}
此错误:
Violation of PRIMARY KEY constraint 'PK_dbo.BranchAds'. Cannot insert duplicate key in object 'dbo.BranchAds'. The duplicate key value is (1, 26).
发生在我尝试使用相同的密钥插入另一BranchAds ..嗯,我应该因为从理论上讲,这是一个很多到很多(联结)表。然而数据库似乎没有意识到这一点。
为什么我这样做?因为我需要在许多表中的自定义字段。
我能做些什么来解决这个问题?在BranchAds类中不添加[Key]
。
它不应该有它自己的BranchAdsID? – shole
没有原因?创建多对多不需要自己的'id'。举一个例子,只要两个表引用彼此作为'ICollections' ... – user1027620
,因为通常对于外键的每对(x,y),它只能出现一次。现在你需要重复几次,因为自定义字段或其他什么,那么你必须使用某些东西来区分具有相同对值的两个记录? – shole