Ich habe zwei Tabellen, die eine von ihnen zu anderen beziehen. Die erste TabelleZwei Primarykeys auf derselben Tabelle und Fremdschlüssel
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; }
}
und die zweite Tabelle:
public class Language
{
[Key]
[Required]
[MaxLength(2), MinLength(2)]
public string Code { get; set; }
[Required]
public string Country { get; set; }
}
Die Daten Samen sieht wie folgt:
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") }
);
ich die db aktualisieren und bekam folgende Fehlermeldung:
System.Data.Entity.Core .UpdateException: Beim Aktualisieren der Einträge ist ein Fehler aufgetreten. Weitere Informationen finden Sie in der inneren Ausnahme. ---> System.Data.SqlClient.SqlException: Verletzung der PRIMARY KEY-Einschränkung 'PK_dbo.Texts'. Kann doppelten Schlüssel in Objekt 'Dbo.Texts' nicht einfügen. Der doppelte Schlüsselwert ist (TEXT001).
Was ist los?
Ja, aber in Kombination mit den Feldern 'Feldname' und' Sprache'. Bitte schau dir die Seeddaten an, dann solltest du was ich meine. –
@zero_coding - Nicht sicher, aber ich denke, Sie sollten angeben, dass der 'Language'' Schlüssel' ein Fremdschlüssel ist - '[Key, ForeignKey (" Language "), Spalte (Order = 2)]' –
setzt komplexe Eigenschaft ' Sprache als Schlüssel gültig? –