模型的Asp.net列表属性丢失了

时间:2013-10-28 11:59:41

标签: asp.net asp.net-mvc asp.net-web-api

在asp.net Web API中,我得到了一个列表为属性的模型。

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

成功运行种子方法后,当我在服务器资源管理器中查看表格数据时,只有这个属性Title,但MyList不是{t}显示。

当我在地址栏中输入/api/MyModel/potato并查看控制器中的调试窗口时,Visual Studio会告诉马铃薯对象的MyList属性为null,但它不是实际上。

如何访问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"
            }
        }
    );
}

1 个答案:

答案 0 :(得分: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个对象。

使用此模型,您可以通过以下方式在Action中调用它:

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