正在从数据库中的对象检索数组或列表
本文关键字:检索 数组 列表 对象 数据库 | 更新日期: 2023-09-27 18:24:03
当我从数据库中提取一个对象时,我遇到了一个问题,即获取框架也要在对象中获取一个数组。我发现,对于子对象,.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);
}
我确实遇到了各种各样的问题,它没有返回Run对象的列表,但当我执行.Include("Runs")时解决了这个问题。所以,现在我的问题是DataLabels字符串数组。如果我尝试。Include("DataLabels")程序失败并显示:
指定的Include路径无效。EntityType"Program_Dataviewer.Models.RunData"未声明导航名为"DataLabels"的属性。
我在网上搜索了一些,没有看到任何明确的答案。谢谢你的帮助。
数据模型中不能有基元集合,因为每个集合都必须映射到关系空间中的一个表(想想看,数据库将如何组织/保存集合?)。您可以为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; }
}