Получение массива или списка из объекта в базе данных - PullRequest
2 голосов
/ 11 февраля 2012

У меня проблемы при извлечении объекта из базы данных с получением фреймворка, чтобы также получить массив в объекте. Я обнаружил, что для подобъектов .Include («подобъект»), кажется, работает, но я не могу заставить его работать для массивов или списков.

Моя модель:

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

У меня были всевозможные проблемы, связанные с тем, что я не возвращал список объектов Runs, но когда я сделал .Include ("Runs"), которое решило проблему Итак, теперь моя проблема в строковом массиве DataLabels. Если я пытаюсь .Include ("DataLabels"), программа завершается неудачно и говорит:

Указанный путь включения недействителен. EntityType Program_Dataviewer.Models.RunData не объявляет навигацию свойство с именем 'DataLabels'.

Я искал в Интернете некоторые, я не вижу четких ответов. Спасибо за помощь.

1 Ответ

1 голос
/ 11 февраля 2012

Вы не можете иметь коллекции примитивов в своей модели данных, поскольку каждая коллекция должна быть сопоставлена ​​с таблицей в реляционном пространстве (подумайте об этом - как база данных собирается организовать / сохранить вашу коллекцию?)Что вы можете сделать, это ввести таблицу / сущность для 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; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...