我建立一個應用程序周圍的遊戲旋轉和我保持2種動作的名單在我的遊戲對象:MVC modelbuilding:在表的多個外鍵,代碼首先EF
public class Game
{
public int Id {get;set;}
List<Action> ActiveActionList {get;set}
List<Action> PassiveActionList {get;set;}
... (several other variables)
}
public class Action
{
public int Id {get;set;}
Game Game {get;set;}
...(several other variables)
}
的這裏的想法是,一個動作或者是在被動或主動的ActionList(從來沒有在兩者),我把在行動上的一側爲基準爲好,使之與行動的工作時,我可以這樣說:
if (currentAction.Game.Id == someVariable)
...
我遇到的問題是,當我看向所創建的數據庫。 「操作」表中有所有正常的變量我的預期,但對於遊戲對象引用它顯示下列:
- Game_Id
- Game_Id1
- Game_Id2
我猜測我應該在DbContext中的模型構建器重寫中做一些事情,以確保只有1列引用Game_Id。
我試着使用:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Actie>().HasRequired<Spel>(s => s.Spel).WithMany(a => a.Actielijst).HasForeignKey(a => a.Spel).WillCascadeOnDelete(false);
base.OnModelCreating(modelBuilder);
}
基於此崗位(Entity Framework 4.1 InverseProperty Attribute and ForeignKey),但現在我得到另一個錯誤:
國外關鍵部件「遊戲」是不是一個聲明的屬性在類型'行動'上。驗證它沒有被明確地從模型中排除,並且它是一個有效的基本屬性。
我不知道如何,因爲我希望我只是用在上面的模型構建器錯誤的配置解決這個問題,所以我希望這裏有人能指出我吧:)