0

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

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"
            }
        }
    );
}
4

1 回答 1

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");
于 2013-10-28T12:07:20.763 回答