我有兩個表,其中一個與其他相關。 第一個表同一個表和外鍵上的兩個主鍵
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)]' –
設置複雜屬性'語言是否有效? –