Сведения о вопросе

DED

01:05, 15th August, 2020

Теги

c#   .net    

Хранение данных из приложения C#

Просмотров: 385   Ответов: 9

Недавно я занялся изучением некоторых C# и написал клон Yahtzee. Мой следующий шаг (Теперь, когда логика игры установлена и функционирует правильно) - это интеграция некоторого метода хранения статистики по всем сыгранным играм.

Мой вопрос заключается в следующем: как я должен хранить эту информацию? Моей первой мыслью было бы использовать базу данных, и я чувствую, что это ответ, который я получу... если это так, Можете ли вы указать мне хороший ресурс для создания и доступа к базе данных из приложения C#?


Хранение в файле XML на самом деле имеет больше смысла для меня, но я подумал, что если я предложу это, то меня разорвут на части ;). Я привык к созданию веб-приложений, и для них текстовые файлы обычно хмурятся.

Итак, идя с файлом XML, какие классы я должен смотреть, чтобы обеспечить легкую манипуляцию?



  Сведения об ответе

SKY

05:46, 12th August, 2020

Вот одна идея: используйте сериализацию Xml. Создайте свою структуру данных GameStats и при необходимости используйте атрибуты Xml, чтобы влиять на схему по своему усмотрению. Мне нравится использовать этот метод для небольших наборов данных, потому что он быстрый и простой, и все, что мне нужно сделать, это спроектировать и управлять структурой данных.


using (FileStream fs = new FileStream(....))
{
    // Read in stats
    XmlSerializer xs = new XmlSerializer(typeof(GameStats));
    GameStats stats = (GameStats)xs.Deserialize(fs);

    // Manipulate stats here ...

    // Write out game stats
    XmlSerializer xs = new XmlSerializer(typeof(GameStats));
    xs.Serialize(fs, stats);

    fs.Close();
}


  Сведения об ответе

SSESION

00:34, 10th August, 2020

База данных, вероятно, была бы излишней для чего - то подобного-начните с хранения вашей информации в XML doc (или серии XML docs, если есть много данных). Вы получаете все эти изящные XCopy deployment вещи, вы все еще можете использовать LINQ, и это был бы плавный переход к базе данных, если бы вы позже решили, что вам действительно нужна эффективная логика реляционных запросов.


  Сведения об ответе

prince

08:05, 14th August, 2020

База данных может быть излишней - вы думали о том, чтобы просто хранить результаты в файле?

Если вы решите использовать базу данных, вы можете рассмотреть SQLite, который вы можете распространять точно так же, как файл. Существует поставщик с открытым исходным кодом .NET-System.Data.SQLite, который включает в себя все, что вам нужно для начала работы.

Доступ и чтение из базы данных в .NET довольно легко - посмотрите на этот вопрос для примера кода.


  Сведения об ответе

Chhiki

04:38, 22nd August, 2020

SQL Express from MS - это отличная бесплатная, облегченная версия их базы данных SQL Server. Вы можете попробовать это сделать, если пойдете по маршруту DB.

Кроме того, вы можете просто создать наборы данных в приложении и сериализовать их до xml, или вы можете использовать что-то вроде недавно отчеканенной Entity Framework , поставляемой с .NET 3.5 SP1


  Сведения об ответе

LIZA

16:41, 1st August, 2020

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

Лично для игры, которая существует только на компьютере пользователя, я бы просто сохранил статистику в файле (XML или двоичный - выбор зависит от того, хотите ли вы, чтобы он был удобочитаемым или нет).


  Сведения об ответе

park

11:02, 15th August, 2020

Я бы рекомендовал сохранить ваши данные в simple POCOs и либо сериализовать их в xml, либо в двоичный файл, как это сделал Брайан выше.

Если вам нужна база данных, я бы предложил Sql Server Compact Edition или VistaDB . Оба они размещены inproc в вашем приложении.


  Сведения об ответе

davran

21:06, 1st October, 2020

Вы можете использовать пространства имен System::Xml или пространства имен System::Data . Первый дает вам raw XML, второй дает вам удобную обертку для XML.


  Сведения об ответе

piter

23:21, 12th August, 2020

Я бы рекомендовал просто использовать базу данных. Я бы рекомендовал использовать инструмент LINQ или ORM для взаимодействия с базой данных. Чтобы узнать LINQ, я бы взглянул на сообщения Скотта Гатри. Я думаю, что их всего 9 вместе взятых. Я связал часть 1 ниже. Если вы хотите пойти с инструментом ORM, скажем nhibernate, то я бы рекомендовал проверить лето nHibernate скринкастов. Они действительно являются хорошим учебным ресурсом для nhibernate.

Я не согласен с использованием XML. С отчетной статистикой на большом количестве данных вы не можете превзойти использование реляционной базы данных. Да, XML является легким, но есть много вариантов для легких реляционных баз данных также, кроме того, чтобы идти с полномасштабной реализацией на основе сервиса. (например, SQL Server Compact, SQLite и т. д...)


  Сведения об ответе

ЯЯ__4

06:36, 18th August, 2020

Для этой ситуации атрибут [Serializable] в хорошо смоделированном классе Stats и XmlSerializer - это путь, который нужно пройти, IMO.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться