2013-10-28 58 views
0

在asp.net Web API中,我得到一個模型,它有一個列表屬性。Asp.net列表屬性的模型會丟失

public class MyModel { 
     [Key, Required] 
     public string Title { get; set; } 
     public List<string> MyList { get; set; } 
} 

成功運行種方法後,當我檢查的服務器資源管理器表的數據的話,只有這個屬性Title,但不顯示MyList

當我在地址欄中輸入/api/MyModel/potato並查看我的控制器中的調試窗口時,Visual Studio告訴馬鈴薯對象的MyList屬性爲空,但實際上並不是這樣。

如何訪問MyList?

更新:這裏的種子法

protected override void Seed(MyProject.Models.MyProjectContext context) 
{ 
    context.MyModels.AddOrUpdate(
     m => m.Title, 
     new MyModel { 
      Title = "potato", 
      MyList = new List<string>() { 
       "Foo", 
       "Bar" 
      } 
     } 
    ); 
} 
+0

發表您填寫表法碼。 –

+1

'MyList'不在您的表中,因爲它沒有適合數據庫的'數據類型'。 – WannaCSharp

+1

用我的Seed方法更新了描述 – Explicat

回答

0

你應該創建2個模型來創建關係SQL Server可以實際創建。主鍵不應該是可編輯的。如果你改變標題,你改變PK,這從來不是一個好設計。

public class MyModel 
{ 
    [Key] 
    public int Id {get; set; } 
    [Required] 
    public string Title { get; set; } 
    //set the relationship to MyList-class 
    public virtual ICollection<MyList> MyList {get; set;} 
} 

public class MyList 
{ 
    [Key] 
    public int Id {get; set; } 
    [Required] 
    public string Name {get; set; } 
} 

有了這個,你保證,每一個MyClass對象有0,1..n MyList對象。

而與此模型,您可以通過調用它在你的行動:

var result = context.MyClass.Include(o => o.Mylist); 
//alternative 
var result = context.MyClass.Include("MyList");