Хранение массива или IList в другой модели данных IList - PullRequest
0 голосов
/ 11 апреля 2019

Кажется, я не могу найти наилучшую практику или лучший механизм структурирования и использования данных для моего приложения MVVM Xamarin. Это может быть простым недоразумением о том, как атаковать проблему, но я не уверен.

Я пытался использовать IEnumerable, IList и простой массив для многомерных данных (связывание?), Но я довольно новичок в MVVM, поэтому я могу подойти к этому неправильно.

Это для приложения Android Xamarin.Forms, поэтому использование привязок данных типа MySQL не работает (так как вы не можете хранить в базе данных). Таким образом, использование этих классов данных является правильным способом, но я не знаю, как структурировать реляционные данные. Каждый пояс может иметь МНОГО видео, кнопок и другого контента.

Я рассмотрел примеры Xamarin по этому вопросу, но ни одна из них не касалась реляционных данных, поставляемых вместе с приложением.

// Trying to use an aray
public IList<BeltContent> BeltContents { get; private set; }
public BeltData()
    {
        // Bringing it all together
        BeltContents = new List<BeltContent>();

        BeltContents.Add(new BeltContent
        {
            BeltName = "White",
            VideoContent = {
                  "https://url-to-my-video01", 
                  "https://url-to-my-video01" }
        });

    }


//Trying to use an IList to initialize inside

public IList<BeltContent> BeltContents { get; private set; }
public Ilist<VideoContent> VideoContents {get; private set; }
public BeltData()
    {
        // Bringing it all together
        BeltContents = new List<BeltContent>();
        VideoContents = new List<VideoContent>();

        BeltContents.Add(new BeltContent
        {
            BeltName = "White",
            VideoContent = VideoContents.Add(new VideoContent
               {
                   VideoName = "SomeName",
                   VideoUri = "Https://some-url-to-video"
               },
               {
                  //etc
               }
        });

    }

У меня также есть модели данных для этих ПРИМЕЧАНИЕ: комментарии для BeltContent для других маршрутов, которые я пробовал. Добавлено в комментарии для объединения кода

// The Data Model for videos (note they all follow this pattern)
public class VideoContent
{
    public string VideoName { get; set; }

    public string VideoUri { get; set; }
}


// Full content for the data model
public class BeltContent
{

    public string BeltName { get; set; }

    public string BeltDescription { get; set; }

    // public IEnumerable<VideoContent> VideoContent {get; set;}
    // public string[] VideoContent {get; set; }
    // public IList<VideoContent> VideoContent {get; set;} 

    public VideoContent VideoContent {get; set; }

    public ButtonResourceUri ButtonResourceUri { get; set; }

    public WrittenContent WrittenContent { get; set; }

}

Я надеялся, что смогу использовать многомерный массив или IList для хранения вложенных данных.

1 Ответ

1 голос
/ 11 апреля 2019

Читая комментарии вашего поста, я пытаюсь сделать слепой выстрел ...

Поскольку я был новичком в Xamarin (с Windows Forms и Server), это тоже было проблемой для меня. Как хранить? Большие ORM не работают ...?!

Это относительно просто - вы находитесь на Xamarin со своими собственными правилами. Есть много решений для проблем, связанных с Xamarin, я постараюсь показать свое стандартное решение.

  • Создание проекта Xamarin
  • Создание библиотеки классов (предпочтительно в .Net Standard)
  • Откройте диспетчер пакетов Nuget для библиотеки классов
  • Получите пакет «SQLite-Net Extensions»
  • Имя пакета: SQLiteNetExtensions
  • Я не думаю, что вам нужны некоторые пакеты MVVM для SQLiteExtensions
  • В этом блоге есть очень хорошее руководство по инициализации модели базы данных и чтению / записи данных
  • Исходная база данных должна быть скопирована как file-include> в каждом независимом от платформы проекте
  • С помощью PCLStorage или чего-то еще вы можете выполнить эту задачу, импортировав исходную базу данных в качестве ресурса в ваше приложение xamarin и скопировав базу данных в нужное место.

Я всегда получаю решение PCLStorage, например в этом списке

Один из трюков с xamarin: попробуйте найти стандартные библиотеки .net, и вы должны (во многих случаях) использовать его на большинстве платформ xamarin.

Второе: следите за открытием readme-файлов при импорте nuget !!! Это очень важно. Раньше я их отбрасывал и забывал почти каждую процедуру инициализации. У меня ушло часов

Третье: существует множество библиотек nuget, которые необходимо установить в базовом приложении и во всех зависящих от платформы приложениях. Не забывайте, что в таких случаях, как SQLiteExtensions - он установит зависимые от платформы библиотеки.

(Ребята, не убивайте меня за это - я только пытаюсь помочь ;-))

Между прочим: SQLiteExtensions использует IList или List ... Если производительность является проблемой, вы можете позже переключиться на кэшированную ветвь SQLiteExtensions (если вам нужно)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...