Установите тип данных столбца базы данных SQL Server для класса - PullRequest
0 голосов
/ 04 мая 2019

Я недавно сделал монопольную игру с использованием C # Winforms, и теперь мне нужно преобразовать ее в веб-приложение.Я использую ASP.NET, и у меня возникают некоторые проблемы с переустановкой переменных при нажатии кнопки.

Для решения этой проблемы я планировал хранить все данные в базе данных SQL Server, когда бы они ни находились.изменен, а затем восстановлен при необходимости.Основная проблема в том, что у меня есть 2 класса, Square и Player.

Я могу обработать данные для игрока в порядке, но с каждым квадратом связан игрок, называемый «Владелец».Мне просто интересно, есть ли способ, чтобы в базе данных SQL Server я мог установить тип данных для «Владелец» в классе «Player», чтобы я мог сохранить его вместе со всеми другими данными.Заранее спасибо.

1 Ответ

0 голосов
/ 05 мая 2019

SQL Server был разработан и работает лучше всего для структурированных табличных данных. Для сложных объектов это обычно означает, что для представления одного объекта требуется несколько записей в нескольких таблицах.

Однако вы пытаетесь сохранить сложный объект в одном столбце в SQL Server. Вы можете сделать это в SQL Server, сериализовав ваш объект в строку (обычно XML или JSON) и сохранив строковое представление вашего объекта в столбце nvarchar (max) в SQL. Когда вы извлекаете запись, десериализуйте ее обратно в объект. При этом вы теряете немного энергии в SQL Server, но если вам не нужно манипулировать данными внутри объекта на стороне сервера, то он работает нормально (вы можете выполнять ограниченную обработку XML и JSON на сервере SQL, но от звуков того, что вы делаете, вам не нужно).

Одним из самых простых и популярных способов сериализации объектов является использование Newtonsoft JSON. Добавьте пакет NuGet для Newtonsoft, а затем сериализуйте ваши объекты, вызвав string myComplexObjectAsAString = JsonConvert.SerializeObject(myComplexObject);. Вы можете отправить эту строку в SQL, и когда вы получите ее обратно, используйте MyComplexObjectType myComplexObject = JsonConvert.DeserializeObject<MyComplexObjectType>(theStringDataThatYouGotFromSqlServer);

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