Bitte lesen Sie diese Frage: Create code first, many to many, with additional fields in association tableComposite-Keys und getrennt Identität Key
Hier ist das Szenario von OP:
public class Member
{
public int MemberID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public virtual ICollection<Comment> Comments { get; set; }
}
public class Comment
{
public int CommentID { get; set; }
public string Message { get; set; }
public virtual ICollection<Member> Members { get; set; }
}
public class MemberComment
{
public int MemberID { get; set; }
public int CommentID { get; set; }
public int Something { get; set; }
public string SomethingElse { get; set; }
}
Die akzeptierte Antwort war:
public class MemberComment
{
[Key, Column(Order = 0)]
public int MemberID { get; set; }
[Key, Column(Order = 1)]
public int CommentID { get; set; }
public virtual Member Member { get; set; }
public virtual Comment Comment { get; set; }
public int Something { get; set; }
public string SomethingElse { get; set; }
}
Gerade jetzt, meine Frage ist: Was ist, wenn ich ein anderes Identitätsfeld wie Guid oder AutoInc int hinzufügen möchte, zum Beispiel:
public int MemberCommentID { get; set; }
Ich bin nicht darüber diskutieren, es ist die bessere Methode oder nicht, ich will wissen, wie ich es mache?
Ich dachte so etwas wie dieses
public class MemberComment
{
[Key, Column(Order = 0)]
public int MemberCommentID { get; set; }
[Key, Column(Order = 1)]
public int MemberID { get; set; }
[Key, Column(Order = 2)]
public int CommentID { get; set; }
public virtual Member Member { get; set; }
public virtual Comment Comment { get; set; }
public int Something { get; set; }
public string SomethingElse { get; set; }
}
Aber dann wird EF (glaube ich) verwenden, um die drei Felder im Schlüssel, wenn der rechte MemberCommentID ist allein 1 Schlüssel, und MemberID + CommentID ist ein weiterer wichtiger .
Warum es nicht die Schlüssel MitgliedID + CommentID erzwingt, wenn ich versuche, eine neue MemberComment mit doppelten MemberID + KommentarID, EF wirft keinen Fehler ..:/ –
Ja, ich weiß, es ist perfekt ... der Schmerz eine bestehende Datenbank zu arbeiten und zu pflegen:/ –
@ClickOk So ist es [Code-zuerst-von-Datenbank] (https://msdn.microsoft.com/en-us/library/jj200620.aspx) anstatt Code-zuerst wie es in deiner Frage markiert ist, oder fehlt mir etwas? –