2016-08-04 40 views
1

Ich habe zwei Entitäten genannt User und Schüler, wie unten gezeigt:Wie erstellt man eine PK/FK-Beziehungszeichenfolge und eine eindeutige Kennung?

public class User 
{ 
    [Key] 
    public string Id { get; set; } 

    //omitted for brevity 
} 


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

    //Foreign key for User 
    public Guid UserId { get; set; } 

    //omitted for brevity 
} 

In einem MVC-Projekt , verwende ich EF-Code Erste und will Beziehung zwischen diesen Stellen zu schaffen. Welchen Datentyp sollte ich als UserId-Feld in User entity verwenden? String oder Guid (gibt es Guid-Werte im Id-Feld der Benutzertabelle)? Könnten Sie bitte ein Beispiel geben?

+0

** Es gibt Guid-Werte im Id-Feld der Benutzertabelle ** Sie haben bereits eine Tabelle? Warum fragst du welchen Typ es dann sein soll? Der Typ Ihrer Eigenschaft sollte übereinstimmen (in PK & FK-Tabelle) – Shyju

+0

@Shyju ich meinte ASP.NET Identity User-Tabelle :) Also, ich muss eine Beziehung mit ihm erstellen, aber nicht sicher, welchen Datentyp sollte ich in meiner benutzerdefinierten Tabelle verwenden? –

+0

@Shyju Irgendwelche Antwort bitte? –

Antwort

0

Sie sollten Int für ID-Feld wirklich für Indexzwecke verwenden. Die Verwendung von Guid oder String ist wesentlich langsamer als int.

Aber für Ihre Frage, hat die Art der UserId vom gleichen Typ sein, wie User.Id

+0

Ja, ich weiß, aber ich muss eine Beziehung mit ASP.NET-Identity-Tabellen erstellen und sie verwenden den GUID-Datentyp (String) als Id-Feld. Auf der anderen Seite, sie zu Int wirklich ein großes Problem zu ändern und nicht richtig ausgeführt. Also, bitte irgendein Beispiel? –

+0

@binary Sie könnten die ID-Spalte der Identitätstabelle ändern, um int anstelle von string zu verwenden. Aber das ist nicht einfach, sobald Sie in der Produktionsphase sind. In Ihrem Fall stecken Sie also mit string fest, da der Datentyp Varchar anstelle von Guid in der Datenbank ist. – Steve

+0

Ich habe viele verschiedene Methoden auf vielen Seiten ausprobiert, aber keiner von ihnen funktioniert ordnungsgemäß. Daher besteht die einzige Möglichkeit darin, eine geeignete Beziehung in meinen benutzerdefinierten Tabellen und der AP.NET-Benutzertabelle zu erstellen. Aber wenn ich String verwende, ist es möglich, Guid-Werte für die neuen Datensätze in der Student-Tabelle zu erstellen? –

0

Sie für GUID in User-Entity gehen können.

public class User 
{ 
    [Key] 
    public Guid Id { get; set; } 
} 

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

    //Foreign key for User 
    public Guid UserId { get; set; } 

    public virtual User User { get; set; } 

} 
+0

Benutzer ist die Standardtabelle von ASP.NET Identity und ich möchte die User-Entität nicht ändern. Also, in diesem Fall sollte ich Guid oder String für UserId Feld in Student verwenden? Wenn ich string sollte, wie kann ich GUID-Werte für die neuen Datensätze in Student erstellen? Könnten Sie bitte Ihre Antwort ändern? –

+0

Antwort bitte? –