2016-07-26 26 views
-1

Ich habe eine Frage. Ich weiß nicht wirklich, ob es möglich ist. Ich arbeite an einer MVC-Anwendung und ein Teil des Modells wie folgt aussehen:Ist es möglich, zwei Schlüssel in derselben Klasse zu haben?

public class EmployeeNewspaper 
{ 
    public string Name { get; set; } 
    [Key] 
    public string Appendage { get; set; } 
    public string SourceInformationName { get; set; } 
} 

Also meine Frage ist: Ist es möglich, zwei Schlüssel in der gleichen Klasse zu haben? Oder was kann ich tun? Ich muss den Namen und das Anhängsel einzigartig haben. Ist es möglich?

+4

Es ist nicht ganz klar, was die Frage ist - Ist dies ein Entity-Framework-Modell oder ein Standard-MVC-Modell? Wenn es sich um ein Standard-MVC-Modell handelt, möchten Sie, dass Ihre Eindeutigkeit durch Ihren Code oder Ihre Benutzeroberfläche umgesetzt wird? (Wollen Sie beispielsweise einen Laufzeitfehler oder einen Validierungsfehler, wenn ein Duplikat hinzugefügt wird?) - Wenn Sie klären können, wo Sie die Eindeutigkeit erzwingen möchten, ist dies sinnvoll, da der Ansatz unterschiedlich ist (DB-Schlüssel, Hashes/Gleichheitsvergleich, Validierungsregeln usw.) – Charleh

+0

Es ist ein Entity-Framework-Modell. Ich möchte dem Benutzer diese eindeutige Information zeigen – SomeAnonymousPerson

+0

Wenn ich die gespeicherte Prozedur in der DB ausführen, habe ich die richtigen Informationen. Aber wenn ich die Informationen an das Modell weitergebe, da ich nur den Schlüssel im Anhang habe, hat er andere Namen, und er zeigt mir auf jeden Fall den gleichen Namen. Also muss ich auf jeden Fall den Namen und den Anhangsschlüssel (zusammen) machen. Habe ich mich selbst erklärt? – SomeAnonymousPerson

Antwort

1

Dank @Charle ich eigentlich für Composite-Schlüssel sucht wurde und die Antwort lautet:

public class EmployeeNewspaper 
{ 
    [Key][Column(Order = 0)] 
    public string Name { get; set; } 
    [Key][Column(Order = 1)] 
    public string Appendage { get; set; } 
    public string SourceInformationName { get; set; } 
} 
0

könnten Sie einen Guid verwenden und eine G lobally U nique ID entifier erhalten.

Aber Sie müssen sich bewusst sein, dass mit diesem:

Guid MyID = new Guid(); 

in einem All-Nullen (leer) ID führt.

So müssen Sie es auf diese Weise verwenden:

Guid MyID = Guid.NewGuid(); 
+2

Wie dies beantwortet die Frage? – Maarten

+0

Wie kann ich der GUID den Namen und den Anhang zuweisen? Danke! – SomeAnonymousPerson

+2

Dies gibt Ihnen eine eindeutige ID für die Instanz (abgesehen von der Referenz selbst), aber erzwingt keine Eindeutigkeit für alle Felder. – Charleh

Verwandte Themen