Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Использование БД в WPF приложении 
:(
    Опции темы
Anyone
Дата 17.11.2009, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 1.6.2008

Репутация: нет
Всего: нет



В моем WPF приложении необходимо использовать базу данных. Поскольку в ней будет хранится не много данных, то использовать для этих целей отдельную БД не имеет смысла.
Подскажите как в таком случае лучше хранить данные? Я планирую работать с данными через датасет, который потом сериализовать в XML, но может это не оптимальный вариант.
Второй вопрос. Как лучше в WPF отобразить данные БД? Насколько я понял, проще всего в ItemsControl'е (или производных от него), написать шаблоны данных и селектор шаблонов (стилей)?
PM MAIL   Вверх
Partizan
Дата 17.11.2009, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 67



DataGrid - не вариант?


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
DenWPF
Дата 17.11.2009, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1659
Регистрация: 26.9.2009

Репутация: нет
Всего: 1



я так и не понял откуда ты БД берешь, если ХМЛ то проще template.
PM MAIL   Вверх
Anyone
Дата 18.11.2009, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 1.6.2008

Репутация: нет
Всего: нет



Цитата(Partizan @  17.11.2009,  18:52 Найти цитируемый пост)
DataGrid - не вариант?

Может и вариант.
Имеется в виду этот?
Не очень хочется качать либы, а в списках стандартных классов не нахожу. Нужно попробывать.


Цитата(DenWPF @  17.11.2009,  20:34 Найти цитируемый пост)
я так и не понял откуда ты БД берешь, если ХМЛ то проще template.

Вот именно по поводу этого мне и нужен совет. Не хочу использовать отдельные приложения, планирую либо в xml, либо программно создавать датасет и сериализировать его. Как лучше всего поступить, если достаточно нескольких таблиц (а может даже и одной) и ко-во записей врядли будет больше чем пару десятков? 
PM MAIL   Вверх
Partizan
Дата 18.11.2009, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 67



Anyone, в 10-й студии он уже есть искаропки...

Код

Как лучше всего поступить, если достаточно нескольких таблиц (а может даже и одной) и ко-во записей врядли будет больше чем пару десятков? 


Конечно лучше XML...тем более можно набросать XSD схему и сгенерить классы для маппинга


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Anyone
Дата 18.11.2009, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 1.6.2008

Репутация: нет
Всего: нет



Цитата(Partizan @  18.11.2009,  20:54 Найти цитируемый пост)
Anyone, в 10-й студии он уже есть искаропки...

Пока ставить 10ку не буду, попробую заюзать либу.


Цитата(Partizan @  18.11.2009,  20:54 Найти цитируемый пост)
Конечно лучше XML...тем более можно набросать XSD схему и сгенерить классы для маппинга

Второе предложение мне не понятно, буду разбираться, спасибо за совет.
PM MAIL   Вверх
Anyone
Дата 18.11.2009, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 1.6.2008

Репутация: нет
Всего: нет



Цитата(Partizan @  18.11.2009,  20:54 Найти цитируемый пост)
ем более можно набросать XSD схему и сгенерить классы для маппинга

А чем ее бросать, или руцями придется, а то ничего внятного не нахожу по этому поводу?
PM MAIL   Вверх
Partizan
Дата 19.11.2009, 01:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 67





--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Anyone
Дата 19.11.2009, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 1.6.2008

Репутация: нет
Всего: нет



MSDN гласит:
Цитата

If not already open, double-click the XMLSchema1.xsd file to bring up the XML Designer.

Click the XML Schema tab of the Toolbox and drag a simpleType onto the design surface.

Но мой тулбокс пустой, что я делаю не так?
А вообще, я так понял, проще всего будет сгенерировать схему используя xml файл.

Цитата(Partizan @  18.11.2009,  20:54 Найти цитируемый пост)
и сгенерить классы для маппинга

А по поводу этого можно подробней, мне ничего не понятно из того что я нашел, что мне вообще дает эта схема, если xml-файл я формирую программно (имею в виду, что я уверен в том что структура правильная)?
PM MAIL   Вверх
Partizan
Дата 19.11.2009, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 67



по XML схеме утилиткой xsd.exe можно сгенерить cs файлы с классами, соответствующими схеме, которые обычно можно сериализовать/десериалозовать XmlSerializer-ом.


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Anyone
Дата 19.11.2009, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 1.6.2008

Репутация: нет
Всего: нет



Я правильно понял, что этот класс служит именно для того чтоб можно было выполнять сериализацию\десериализацию xml-документа? Но, к примеру, выборку гораздо проще выполнить с помощью LINQ to XML, чем с помощью методов класса, не совсем понимаю что мне он дает.
PM MAIL   Вверх
Partizan
Дата 19.11.2009, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 67



Ну собственно говоря, тут выбирать Вам - что удобнее под задачу, то и нужно использовать...

Цитата

Подскажите как в таком случае лучше хранить данные?


При указанных количествах данных XML вполне себе подойдёт...а как с ним работать - выбирайте наиболее удобный вариант...я лишь предложил один из них.


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Anyone
Дата 19.11.2009, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 1.6.2008

Репутация: нет
Всего: нет



Цитата(Partizan @  19.11.2009,  16:25 Найти цитируемый пост)
При указанных количествах данных XML вполне себе подойдёт...а как с ним работать - выбирайте наиболее удобный вариант...я лишь предложил один из них.

Ясно, спасибо, этот вариант с классом мне не очень нравится, но буду иметь в виду что такое существует.

Это сообщение отредактировал(а) Anyone - 19.11.2009, 17:10
PM MAIL   Вверх
Anyone
Дата 20.11.2009, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 1.6.2008

Репутация: нет
Всего: нет



Я сделал так:
1. Создал класс Variable со свойствами - колонками таблицы
2. Создал класс VariablesCollection: System.Collections.ObjectModel.ObservableCollection<Variable>,  который служит источником для таблицы (DataGrid)
3. Сериализация коллекции:
Код

        private static XElement SerializeVariables(UgeDrawingCanvas canvas)
        {
            var str = System.Windows.Markup.XamlWriter.Save(canvas.Variables);
            var xElelment = new XElement("Variables");
            xElelment.Add(XElement.Parse(str));
            return xElelment;
        }

4. Десериализация коллекции:
Код

        private static void DeserializeVariables(XElement xElement, ref UgeDrawingCanvas canvas)
        {
            if (xElement != null && xElement.FirstNode!=null)
            {
                var str = xElement.FirstNode.ToString();
                canvas.Variables = XamlReader.Parse(str) as VariablesCollection;
            }
        }


Все отлично работает при использовании небольшого ко-ва элементов коллекции (не более 1000), но мне очень не нравятся мои функции сериализации\десериализации, можно их переписать так, чтобы увеличилось быстродействие?

Это сообщение отредактировал(а) Anyone - 20.11.2009, 22:07
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0929 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.