在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"
}
}
);
}
答案 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");