我有两个表,其中一个与其他相关。 第一个表同一个表和外键上的两个主键
public class Text
{
[Key]
[Column(Order = 1)]
[Required]
[MinLength(7)]
[MaxLength(7)]
public string Fieldname { get; set; }
[Key]
[Column(Order = 2)]
[Required]
public virtual Language Language { get; set; }
[MaxLength(50)]
[MinLength(1)]
[Required]
public string Description { get; set; }
}
,第二个表:
public class Language
{
[Key]
[Required]
[MaxLength(2), MinLength(2)]
public string Code { get; set; }
[Required]
public string Country { get; set; }
}
种子数据看起来如下:
context.Language.AddOrUpdate(
new Language() {Code = "DE", Country = "German"},
new Language() {Code = "EN", Country = "English"});
context.Text.AddOrUpdate(
new Text { Fieldname = "TEXT001", Description = "Server", Language = context.Language.First(e => e.Code == "EN") },
new Text { Fieldname = "TEXT001", Description = "Server", Language = context.Language.First(e => e.Code == "DE") }
);
我更新数据库,并得到了以下错误消息:
System.Data.Entity.Core .UpdateException:更新条目时发生错误。详情请参阅内部例外。 ---> System.Data.SqlClient.SqlException:违反PRIMARY KEY约束'PK_dbo.Texts'。无法在对象'dbo.Texts'中插入重复键。重复的键值是(TEXT001)。
出了什么问题?
是的,但与字段'Fieldname'和'Language'结合使用。请查看种子数据,那么你应该明白我的意思。 –
@zero_coding - 不确定,但我认为你应该指定'语言''键'是一个外键 - '[Key,ForeignKey(“Language”),Column(Order = 2)]' –
设置复杂属性'语言是否有效? –