2017-08-14 7 views
0

Ich habe zwei Tabellen RelImpOrdi und Imprimantes in EF wie folgt definiert:Wie eine Tabelle mit Fremdschlüsseln haben nur in Entity Framework

public class RelImpOrdi 
{ 
    [Key] 
    public int IdImprimante { get; set; } 

    [Required] 
    [MaxLength(50)] 
    public string NomOrdinateur { get; set; } 

    [Required] 
    public int ImpDefault { get; set; } 
} 

public class Imprimantes 
{ 
    [Key] 
    public int Id { get; set; } 

    [MaxLength(50)] 
    [Required] 
    public string NomPartage { get; set; } 
} 

Mein Problem ist, dass ich RelImpOrdi mehr identischen IdImprimante Einträge haben muß, und Da es als Primärschlüssel definiert ist, erzeugt es einige Fehler. Also, wie kann ich IdImprimante als nicht einzigartig haben?

Antwort

1

Ist das nicht der eigentliche Zweck eines Primärschlüssels? Es muss eindeutig sein und einen Wert haben.

So können Sie ein Primärschlüsselfeld nicht als eindeutig festlegen.

Und jetzt für Ihr Problem, können Sie RelImpOrdi ein eigenes Primärschlüsselfeld geben, das seinen eigenen eindeutigen Wert für jeden seiner Datensätze hat.

Sie können IdImprimante als Fremdschlüssel für die Tabelle Imprimantes verwenden.

Auf diese Weise können Sie die eindeutige Identität jedes Datensatzes von RelImpOrdi verwalten und auch mehrere Datensätze mit unterschiedlichen oder gleichen IdImprimante-Werten speichern.

1

Ich denke, Sie wollen eine Eins-zu-viele-Beziehung nicht eins zu eins.

fügen Sie eine int-ID für RelImpOrdi-Klasse hinzu, mit [key] Annotation. Entfernen Sie die Annotation [key] für IdImprimante in der Klasse RelImpOrdi.

+0

OK werde versuchen, danke –

0

Primärschlüssel muss eindeutig sein. Ihre Optionen sind: 1. Entfernen Sie den Primärschlüssel aus der Tabelle. 2. Erstellen Sie eine andere Spalte für den Primärschlüssel, sagen wir "Id", dann wird diese Eigenschaft das Attribut [Key] haben und Sie können kein eindeutiges IdImprimante haben. Aber dann wirst du wahrscheinlich deinen FK wechseln müssen.

+0

Option 1 kann nicht mit Entity Framework arbeiten, da Sie einen Primärschlüssel benötigen. Gute Idee in 2 Ich werde versuchen, danke –

1

Sie versuchen, eine One-To-Many-Beziehung zu verwenden. Dazu müssen Sie eine Primärschlüsselspalte und eine Fremdschlüsselspalte haben. Hierfür müssen Sie das Attribut [ForeignKey] verwenden.

Verwandte Themen