Как сохранить справочные данные - PullRequest
0 голосов
/ 17 февраля 2012

После каждого первого запуска приложения я загружаю все необходимые справочные данные (текстовый файл (формат csv) размером 1 МБ).Эти данные содержат около 30000 строк, и каждая строка представляет собой запись данных с именем, широтой, долготой и высотой.

Какой самый эффективный способ сохранить эти данные?Я попытался сохранить их список в IsolatedStorageSettings.Но это абсолютно худший подход.

Другой способ - сохранить текстовый файл в каталоге IsolatedStorageFile и при каждом запуске приложения загружать файл и анализировать их в моем списке.

Самая несоответствующая часть читает файл.Так что я думаю, использование базы данных, такой как sqlite, имеет ту же проблему, не так ли?

Как бы вы относились к этой проблеме?

С уважением, Дэнни

1 Ответ

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

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

Фоновое чтение: http://www.silverlightshow.net/items/Windows-Phone-7.1-Local-SQL-Database.aspx & http://www.jeffblankenburg.com/2011/11/30/31-days-of-mango-day-30-local-database/

У меня есть файл sdf, который поставляется вместе с приложением, класс данных показан ниже

    [Table]
    public class PointData : IPositionElement, INotifyPropertyChanged
    {
            [Column]
            public string Description { get; set; }

            [Column]
            public double Latitude { get; set; }

            [Column]
            public double Longitude { get; set; }

Затем мы читаем точки, которые рядом, я получаю их со следующим:

    (from ht in _context.Points
         where ht.Latitude >= bottomLeft.Latitude && ht.Latitude <= topRight.Latitude &&
         ht.Longitude >= bottomLeft.Longitude && ht.Longitude <= topRight.Longitude
         select ht
         ).ToArray();

Этот подход был достаточно быстрым для меня (то есть, для извлечения элементов из файла sdf потребовалось меньше времени, чем для позиционирования их на экране и для выполнения всех других связанных с этим математических операций. 300000 элементов из базы данных. Было еще больше оптимизаций, которые я мог бы выполнить в отношении индексации и тому подобного, но, как я уже сказал, в данный момент это было достаточно быстро, поэтому я вернусь к нему в какой-то момент позже.

...