Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / NHibernate помогите с маппингом. / 14 сообщений из 14, страница 1 из 1
30.06.2010, 20:28
    #36716450
Lord British
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NHibernate помогите с маппингом.
Есть три таблички:

MONITORED_OBJECT(ID_OBJECT, ...);

DEVICE(ID_DEVICE, IMEI, ...);

DEVICE_INSTALL(ID_OBJECT, ID_DEVICE, START_TIME, FINISH_TIME);

DEVICE_INSTALL - это табличка истории установки прибора, причем, считается что в данный момент на объект с ID_OBJECT установлен ID_DEVICE если соответствующая строка имеет FINISH_TIME IS NULL. т. е. еще не сняли прибор.

Есть два класса

public MonitoredObject
{
public int Id;
public Device InstalledDevice;
}

public Device
{
public int Id;
public string Imei;
}

как написать маппинг NHibernate чтобы такое замапить? И можно было бы выдергнуть граф

MonitoredObject->Device по IMEI (см. таблицу Device).

что-то типа var monitoredObject = repository.Get(imei);

Куда копать интересуют различные решения. Помогите пож советом.

Спасибо.
...
Рейтинг: 0 / 0
30.06.2010, 20:34
    #36716458
Lord British
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NHibernate помогите с маппингом.
уточню, что маппинг нужен только на выборку. ничего сохраняться не будет.
...
Рейтинг: 0 / 0
30.06.2010, 20:48
    #36716491
SolYUtor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NHibernate помогите с маппингом.
Lord British,

копать отсюда . Попробуйте сами написать маппинг. Коли не получится - кидайте свой маппинг сюда, поправим.
...
Рейтинг: 0 / 0
30.06.2010, 22:02
    #36716598
Lord British
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NHibernate помогите с маппингом.
SolYUtor,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
<?xml version="1.0" encoding="utf-8" ?>

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">

	<class name="MonitoredObjectInfo, Common" table="MONITORED_OBJECT">



		<id name="Id" column="ID_MONITORED_OBJECT" type="Decimal" unsaved-value="0">

      <generator class="sequence">

        <param name="sequence">G_ID_MONITORED_OBJECT</param>

      </generator>

		</id>



    <property column="NAME" type="String" name="Name" not-null="true" />

    <property column="DESCRIPTION" type="String" name="Description" not-null="false" />

    <many-to-one column="ID_MON_OBJECT_TYPE" name="Type" class="MonObjectTypeInfo, Common" />

    <many-to-one column="ID_MON_OBJECT_HARACT" name="Haract" class="MonObjectHaractInfo, Common" />



  </class>

</hibernate-mapping>



<?xml version="1.0" encoding="utf-8" ?>

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">

  <class name="DeviceInfo, Common" table="DEVICE">



    <id name="Id" column="ID_DEVICE" type="Decimal" unsaved-value="0">

      <generator class="sequence">

        <param name="sequence">G_ID_DEVICE</param>

      </generator>

    </id>



    <property column="IMEI" type="String" name="Imei" not-null="true" />

    <property column="DESCRIPTION" type="String" name="Name" not-null="true" />

    <many-to-one column="ID_DEVICE_MODEL" name="Model" class="DeviceModelInfo, Common" />

    <many-to-one column="ID_DEVICE_CONFIG" name="Config" class="DeviceConfigInfo, Common" />



  </class>

</hibernate-mapping>


Что нужно добавить в маппинг для MonitoredObject, чтобы замапить его поле InstalledDevice через табличку DEVICE_INSTALL?
...
Рейтинг: 0 / 0
30.06.2010, 22:03
    #36716600
Lord British
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NHibernate помогите с маппингом.
+

DEVICE_INSTALL(ID_OBJECT, ID_DEVICE, START_TIME, FINISH_TIME);

DEVICE_INSTALL - это табличка истории установки прибора, причем, считается что в данный момент на объект с ID_OBJECT установлен ID_DEVICE если соответствующая строка имеет FINISH_TIME IS NULL. т. е. еще не сняли прибор.
...
Рейтинг: 0 / 0
01.07.2010, 10:01
    #36717072
SolYUtor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NHibernate помогите с маппингом.
Насколько я понимаю - у вас простейшие односторонние ассоциации. самый простой способ их замапить - использовать <many-to-one>
...
Рейтинг: 0 / 0
01.07.2010, 11:54
    #36717370
Lord British
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NHibernate помогите с маппингом.
SolYUtor,

Каким образом? я не пойму. Как мне использовать связующую таблицу в many-to-one? :) Там есть третья таблица почитайте выше.
...
Рейтинг: 0 / 0
01.07.2010, 14:06
    #36717774
SolYUtor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NHibernate помогите с маппингом.
Lord BritishSolYUtor,

Каким образом? я не пойму. Как мне использовать связующую таблицу в many-to-one? :) Там есть третья таблица почитайте выше.

Нафига при связи один ко одному "связующая таблица"?
Что именно вам не понятно? Английские буквы? Вот тут есть родная речь. И даже в ваших маппингах такие связи есть. По образу и подобию сложно сделать?
...
Рейтинг: 0 / 0
01.07.2010, 15:49
    #36718103
Lord British
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NHibernate помогите с маппингом.
SolYUtor,

вы предлагаете мне изменить схему? и свести к тем случаям many-to-one что есть в маппинга.

связь у меня не 1:1, может быть и 0:0
...
Рейтинг: 0 / 0
01.07.2010, 15:49
    #36718107
Lord British
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NHibernate помогите с маппингом.
Lord British,

так вот собственно вопрос. как используя связующую таблицу замапить то что мне нужно?
...
Рейтинг: 0 / 0
01.07.2010, 15:55
    #36718124
Lord British
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NHibernate помогите с маппингом.
Lord British,

у меня есть идея добавить в DEVICE FK NULLABLE поле на ID_INSTALLED_OBJECT, а в MONITORED_OBJECT добавить FK NULLABLE ID_INSTALLED_DEVICE.

тогда можно будет many-to-one.

а DEVICE_INSTALL будет вести историю установок

а вот вопрос был при текущей схеме возможно ли one-to-one замапить.
...
Рейтинг: 0 / 0
01.07.2010, 16:02
    #36718141
Lord British
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NHibernate помогите с маппингом.
Lord British,

хотя нельзя так делать как я написал будет возможна связь

(0:1) (1:0)

а нужно только так (0:0) ИЛИ (1:1)
...
Рейтинг: 0 / 0
01.07.2010, 21:00
    #36718802
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NHibernate помогите с маппингом.
Lord British,

Чет читал читал, ниче не понял, понял что надо только на селект.
Отсюда посоветую, накой вам мап, можно все в классе реализовать при помощи кода,
хоть лениво хоть не лениво, или все таки мап?
...
Рейтинг: 0 / 0
02.07.2010, 10:11
    #36719305
SolYUtor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NHibernate помогите с маппингом.
Lord British,

Из ваших отрывочных данных вообще непонятно, что у вас за схема БД. Собирать по кусочкам схему мне совсем неохота. Хотите красивый ответ - красиво задавайте вопрос, с картинками.

P.S. Связь 0-0 особенно порадовала. Ржал от души. :)
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / NHibernate помогите с маппингом. / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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