2016-10-13 24 views
0

Ich bin neu in Entity Framework. Ich verwende den ersten Ansatz der Datenbank und generiere keine Entitätsdateien. Ich habe 3 Tabellen User, Database und UserDatabase. Die Tabelle UserDatabase hat eine Viele-zu-Viele-Beziehung sowohl mit User als auch mit Database. Ich bin mir nicht sicher, wie ich diese Beziehung in meiner Klasse aufbauen soll.Entity Framework - Verknüpfungstabelle Darstellung

public class Database 
{ 
    [Key] 
    public int DatabaseId { get; set; } 

    public string DatabaseName { get; set; } 
} 

public class User 
{ 
    [Key] 
    public int? UserID { get; set; } 

    [Required] 
    public string Name{ get; set; } 
} 

public class UserDatabase 
{ 
    [Key] 
    public int UserID { get; set; } 

    [ForeignKey("UserID")] 
    public virtual User Users{ get; set; } 

    public int DatabaseID { get; set; } 

    [ForeignKey("DatabaseID")] 
    public virtual Database Database { get; set; } 
} 

Dies ist mein aktueller Code. Wenn ich eine Datenbank pro Benutzer hinzufüge, funktioniert es gut. Wenn ich jedoch ein Vielfaches hinzufüge, wird ein Multiplikationsbedingungsverletzungsfehler ausgegeben. Bitte helfen Sie.

+0

So ein Benutzer kann viele Datenbanken haben? Sollte UserDatabase.Database eine Liste sein? – leetibbett

Antwort

0

Ich habe den Fehler gefunden. In der Linktabelle "UserDatabase" habe ich UserID als Primärschlüssel erwähnt und deshalb kann ich nicht mehrere Datensätze hinzufügen. Es sollte ein zusammengesetzter Schlüssel sein und ich habe sowohl Benutzer als auch Datenbank als Schlüssel markiert und die Reihenfolge gegeben. Ich habe es geändert

public class UserDatabase 
{ 
    [Key, Column(Order=0)] 
    public int UserID { get; set; } 

    [ForeignKey("UserID")] 
    public virtual User Users{ get; set; } 

    [Key, Column(Order=1)] 
    public int DatabaseID { get; set; } 

    [ForeignKey("DatabaseID")] 
    public virtual Database Database { get; set; } 
} 
0

Versuchen Modifizieren Sie Ihre UserDatabase zu folgenden:

public class UserDatabase 
{ 
    [ForeignKey("Users")] 
    public int UserID { get; set; } 

    [ForeignKey("Database")] 
    public int DatabaseID { get; set; } 

    public virtual User Users{ get; set; } 
    public virtual Database Database { get; set; } 
}