正在从数据库中的对象检索数组或列表

本文关键字:检索 数组 列表 对象 数据库 | 更新日期: 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; }
}