Ich habe eine Reihe von Spielern, die über eine FriendLinker
Tabelle miteinander verbunden sind.Code zuerst Generierung zusätzlicher Spalten
Die Tabelle verbindet zwei Spieler miteinander (in diesem Fall der Spieler-> Freund). Ich habe den Player-Setup auf folgende Weise:
public class Player
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key, Column(Order=0)]
public Guid PlayerId { get; set; }
public virtual ICollection<FriendLinker> Friends { get; set; }
[Required]
public string Password { get; set; } //Will be switched to byte[] for hash
[MaxLength(100)]
[Index(IsUnique = true)]
public string Username { get; set; }
}
und der Linker Tisch ist Setup wie folgt aus:
public class FriendLinker
{
[Key]
public int FriendLinkerId { get; set; }
[Required]
public Player Player { get; set; }
[Required]
public Player Friend { get; set; }
}
Dies ist jedoch die folgende Migration zu erzeugen:
CreateTable(
"dbo.FriendLinkers",
c => new
{
FriendLinkerId = c.Int(nullable: false, identity: true),
Player_PlayerId = c.Guid(),
Friend_PlayerId = c.Guid(nullable: false),
Player_PlayerId1 = c.Guid(nullable: false),
})
.PrimaryKey(t => t.FriendLinkerId)
.ForeignKey("dbo.Players", t => t.Player_PlayerId)
.ForeignKey("dbo.Players", t => t.Friend_PlayerId, cascadeDelete: false)
.ForeignKey("dbo.Players", t => t.Player_PlayerId1, cascadeDelete: false)
.Index(t => t.Player_PlayerId)
.Index(t => t.Friend_PlayerId)
.Index(t => t.Player_PlayerId1);
Die Ergebnis erstellt eine zusätzliche Spalte Player_PlayerId1
. Wenn ich player.Friends.add(..)
mache, wird die playerId in PlayerId1 eingefügt.
Was soll ich tun, um zu verhindern, dass die zusätzliche Spalte PlayerId1
generiert wird?