powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Посоветуйте СУБД для редактора игры
4 сообщений из 4, страница 1 из 1
Посоветуйте СУБД для редактора игры
    #37100437
isv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isv
Гость
Ребята, привет.
О проекте. Есть редактор игры на C#. Ресурсы хранятся в xml - контроль над ссылками в приложении. Нужно перевести на БД.
Учтите, что в объектах связи представлены идентификаторами объектов ВМЕСТО САМИХ ОБЪЕКТОВ.
Пробовал ODBMS - MongoDB. Там нужны не идентификаторы а объекты (может что-то не понял, то поправьте).
Сейчас экспериментирую с NHibernate + Firebird.
Застрял с таким ресурсом, как граф.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
class CNode
{
  public Guid Id { get; set; }
}

class CEdge
{
  public Guid Id { get; set; }
  public Guid StartNodeId { get;set; } //reference to start node
  public Guid EndNodeId { get;set; } //reference to end node
} 
Как замапить такую модель, как сказать nhibernate, что StartNodeId и EndNodeId - это вторичный ключ?
Если ID заменить на узлы, то тогда просто:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<class name="Node">
  <id name="Id">
    <column name="Id" not-null="true"/>
    <generator class="guid"/>
  </id>
</class>

<class name="Edge">
  <id name="Id">
    <column name="Id" not-null="true"/>
    <generator class="guid"/>
  </id>
  <property name="StartNode" type="Node"/>
  <property name="EndNode" type="Node"/>
</class>
А модель менять - сроки не позволяют.
...
Рейтинг: 0 / 0
Посоветуйте СУБД для редактора игры
    #37100443
isv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
isv
Гость
И ещё. Поскольку я пока выбираю СУБД - советы с другими решениями тоже приветствуются.
Надеюсь на вашу помощь. Спасибо.
...
Рейтинг: 0 / 0
Посоветуйте СУБД для редактора игры
    #37100775
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Посоветуйте СУБД для редактора игры
    #37105370
KirillMedvedev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если использовать NHibernate, то классы придется менять так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public class CNode
{
  public Guid Id { get; set; }
}

public class CEdge
{
  public Guid Id { get; set; }
  public CNode StartNode { get;set; } //reference to start node
  public CNode EndNode { get;set; } //reference to end node
}

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="YourAssembly" namespace="YourNamespace" default-lazy="false">
<class name="СNode">
  <id name="Id">
    <column name="Id" not-null="true"/>
    <generator class="guid"/>
  </id>
</class>
</hibernate-mapping>

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="YourAssembly" namespace="YourNamespace" default-lazy="false">
<class name="Edge">
  <id name="Id">
    <column name="Id" not-null="true"/>
    <generator class="guid"/>
  </id>
  <many-to-one name="StartNode" class="СNode" column="StartNodeId"/>
  <many-to-one name="EndNode" class="СNode" column="EndNodeId"/>
</class>
</hibernate-mapping>

Иначе, в Вашем примере, Вы с помощью ООП-классов продублировали реляционную структуру. NHibernate под такое не заточен, так как это не хорошо. Вернее, выбирать-то такие классы из базы он сможет, но чтобы осуществить навигацию по объектам, придется реализовывать дополнительные методы поисков объектов по FKProperty, что является лишней работой и очень быстро засорит код. Если изменить FK-Properties на настоящие связи, то остальную работу по связыванию и поддержке целостности модели NHibernate выполнит самостоятельно.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Посоветуйте СУБД для редактора игры
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]