当我从数据库中提取对象时,我遇到了麻烦,同时让框架也在对象中获取一个数组。我发现对于子对象,.Include(“subobject”)似乎可以工作,但我不能让它适用于数组或列表。
我的模特:
public class RunData
{
[Key]
[Required]
public int id { get; set; }
public List<RunElement> Runs { get; set; }
public string[] DataLabels { get; set; }
}
实体清单:
public class ProgramEntities:DbContext
{
public DbSet<RunData> RunData { get; set; }
public DbSet<RunElement> RunElement { get; set; }
}
控制器代码:
public ViewResult Details(int id)
{
RunData rundata = (from RunData in db.RunData.Include("Runs").in where RunData.id == id select RunData).First();
return View(rundata);
}
我确实遇到了各种麻烦,它没有返回运行对象列表,但是当我执行修复问题的.Include(“运行”)时。所以,现在我的麻烦是DataLabels字符串数组。如果我尝试.Include(“DataLabels”)程序失败并说:
指定的包含路径无效。 EntityType 'Program_Dataviewer.Models.RunData'未声明导航 名为“DataLabels”的属性。
我在网上搜索了一些,我没有看到任何明确的答案。谢谢你的帮助。
答案 0 :(得分:1)
您的数据模型中不能包含基元集合,因为每个集合必须映射到关系空间中的表(想一想 - 数据库如何组织/保存集合?)。您可以做的是为DataLabels
引入一个表/实体,例如像这样的东西:
public class RunData
{
[Key]
[Required]
public int id { get; set; }
public List<RunElement> Runs { get; set; }
public List<DataLabel> DataLabels { get; set; }
}
public class DataLabel
{
[Key]
public int id { get; set; }
public string LabelName { get; set; }
}