@graf45231

Entity Framework Core как добавить сторонний параметр при загрузке данных из БД?

Разрабатываю сервер на RAGE MP(мультиплеер для ГТА 5). Решил использовать EntityFrameworkCore, но столкнулся с такой проблемой. На этой платформе есть класс Client с помощью которого можно управлять параметрами игрока и его персонажа, я создал доп класс PlayerData, чтобы было удобнее работать с данными клиента, а также добавить туда свои свойства в дальнейшем. тк встроенных недостаточно. При дисконекте игрока нужно сохранять все значения класса в базу данных, чтобы потом загрузить при коннекте, но из за того, что многие свойства работают ссылаясь на объект Client, нужно при создании экземпляра сразу проинициализировать свойство Client client у класса PlayerData. Но EFC работает с конструкторами без параметров и в итоге при инициализации некоторых свойств происходит рантайм ошибка, тк в этот момент client еще не проинициализирован и программа выкидывает нул референс.
public int Armor
        {
            get
            {
                return client.Armor;
            }
            set
            {
                if (value < 0)
                    client.Armor = 0;
                else if (value > 100)
                    client.Armor = 100;
                else
                    client.Armor = value;
            }
        }

Можно ли как то решить эту проблему или придется отказываться от EFC? Если я не правильно все структурировал и есть способ изменить структуру классов, при этом сохраняя EFC, то скажите.
  • Вопрос задан
  • 105 просмотров
Решения вопроса 1
mindtester
@mindtester Куратор тега C#
http://iczin.su/hexagram_48
EFC (как и EF) предполагает что значимые поля у вас проецируются в колонки БД. но на сколько помню свой скромный опыт, класс может содержать логику, не в геттерах/сеттерах, но методы вполне работают. когда их вызывать будет на вашей совести

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

удачи! ))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы