Я работаю с Microsoft ADO.NET Entity Framework для игрового проекта. Следуя советам других авторов по SO, я рассматриваю моделирование детерминированных и недетерминированных данных отдельно. Идея для этого возникла из обсуждения многопользовательских игр, но, похоже, это имело смысл и в сценарии с одним игроком.
Детерминированный (вещи, которые не изменятся во время игры)
Атрибуты (Сила, Ловкость и т. Д.)
и их описания
Навыки и их описания и
Требования
Расы, фракции, снаряжение и т. Д.
Базовый Атрибут / Умение / Оборудование
разгрузка для монстров
Недетерминированный (вещи, которые сильно изменятся во время игры)
Текущие атрибуты существа (Зелье могущества = +10 к силе), текущее здоровье и мана и т. Д.
Инвентарь игрока, деньги, опыт, уровень
Состояния квестов игрока
Фракция игрокаОтношения
... и так далее.
Моя детерминированная модель будет служить набором констант. Моя недетерминированная модель предоставляла бы мои оперативные данные на лету и была бы сериализована в файл сохраненной игры, чтобы поддерживать состояние игры между сеансами игры. Хранилище данных будет встроенной базой данных SQL Compact.
Так что я мог бы захотеть создать отношения между моей таблицей Attributes (детерминированная модель) и моей таблицей BeingAttributeModifiers (недетерминированная модель), но как мне установить это для разных моделей?
Det model/db Nondet model/db
____________ ________________________
|Attributes | |PlayerAttributeModifiers|
|------------| |------------------------|
|Id | |Id |
|Name | |AttributeId |
|Description | |SourceId |
------------ |Value |
------------------------
Должен ли я использовать две отдельные модели (edmx), которые работают с одной базой данных, содержащей таблицы как детерминированного, так и недетерминированного типа? Или я должен / могу использовать две отдельные базы данных в одной модели? Или две модели, каждая со своей базой данных?
С отдельными моделями / базами данных кажется, что это будет действительно сложно, и я в конечном итоге буду много бороться с EF, раскручивая свой собственный код транзакции и вообще теряя многие преимущества инфраструктуры.
Я знаю, что это смутные вопросы, я просто ищу проверку работоспособности, прежде чем двигаться дальше.