[NHibernate] ошибка mapping'а для класса с <TId>
От: Ilya81  
Дата: 11.10.10 06:57
Оценка:
Используется несколько классов сущностей и классов доступа к данные. Классы сущностей унаследованы от такого класса:
public class PersistentObject<TId> : IPersistentObject<TId> where TId : struct
    {
        [DataMember]
        public virtual TId Id { get; set; }
...

Ошибка с mapping'ом такого класса сущности:
public class WatchList: PersistentObject<int>
    {
        [DataMember]
        public virtual string Name { get; set; }
        [DataMember]
        public virtual User UserId { get; set; }
        [DataMember]
        public virtual WatchSecurity WatchSecurity{ get; set; }
    }

И это самое свойство TId Id проецируется с ошибкой, для него используется такой mapping:
<class name="WatchList" lazy="true" table="[WatchList]">
    <id name="Id" type="int" unsaved-value="0">
      <column name="Id" sql-type="int" not-null="true" unique="true" />
      <generator class="identity" />
    </id>

Названия таблиц и их атрибутов указаны правильно, а в сообщении исключения написано только то, что ошибка с mapping'ом. Без описания этого свойства id ошибки не возникает, но оно нужно. Подскажите, пожалуйста, в чём может быть ошибка с mapping'ом этого свойства.
Re: [NHibernate] ошибка mapping'а для класса с <TId>
От: skodnik  
Дата: 11.10.10 07:45
Оценка:
Здравствуйте, Ilya81, Вы писали:

Помню, когда то была проблема с мапингом. Решилась тем что мапинг задвали не атрибутами на пропертях а ручным написанием XML с мапингом.
Собственно потом вообще от NH отказались.
Re[2]: [NHibernate] ошибка mapping'а для класса с <TId>
От: SergASh  
Дата: 11.10.10 07:57
Оценка:
Здравствуйте, skodnik, Вы писали:

S>Собственно потом вообще от NH отказались.


В пользу чего если не секрет?
Re[2]: [NHibernate] ошибка mapping'а для класса с <TId>
От: Ilya81  
Дата: 11.10.10 08:00
Оценка:
Здравствуйте, skodnik, Вы писали:

S>Здравствуйте, Ilya81, Вы писали:


S>Помню, когда то была проблема с мапингом. Решилась тем что мапинг задвали не атрибутами на пропертях а ручным написанием XML с мапингом.

S>Собственно потом вообще от NH отказались.

Ну и этот mapping писался вручную (но не мной). Но понять, что неправильно в этом куске написано, понять никак не удаётся. А ошибка не исчезает.
Re[3]: [NHibernate] ошибка mapping'а для класса с <TId>
От: skodnik  
Дата: 11.10.10 11:38
Оценка:
Здравствуйте, SergASh, Вы писали:

SAS>Здравствуйте, skodnik, Вы писали:


S>>Собственно потом вообще от NH отказались.


SAS>В пользу чего если не секрет?

LINQ2SQL, EF
Re: [NHibernate] ошибка mapping'а для класса с <TId>
От: Горбач Алексей Украина http://gorbach.wordpress.com/
Дата: 12.10.10 16:08
Оценка:
Здравствуйте, Ilya81, Вы писали:

I>Используется несколько классов сущностей и классов доступа к данные. Классы сущностей унаследованы от такого класса:

I>
I>public class PersistentObject<TId> : IPersistentObject<TId> where TId : struct
I>    {
I>        [DataMember]
I>        public virtual TId Id { get; set; }
I>...
I>

I>Ошибка с mapping'ом такого класса сущности:
I>
I>public class WatchList: PersistentObject<int>
I>    {
I>        [DataMember]
I>        public virtual string Name { get; set; }
I>        [DataMember]
I>        public virtual User UserId { get; set; }
I>        [DataMember]
I>        public virtual WatchSecurity WatchSecurity{ get; set; }
I>    }
I>

I>И это самое свойство TId Id проецируется с ошибкой, для него используется такой mapping:
I>
I><class name="WatchList" lazy="true" table="[WatchList]">
I>    <id name="Id" type="int" unsaved-value="0">
I>      <column name="Id" sql-type="int" not-null="true" unique="true" />
I>      <generator class="identity" />
I>    </id>
I>

I>Названия таблиц и их атрибутов указаны правильно, а в сообщении исключения написано только то, что ошибка с mapping'ом. Без описания этого свойства id ошибки не возникает, но оно нужно. Подскажите, пожалуйста, в чём может быть ошибка с mapping'ом этого свойства.

Попробуйте не указывать unique="true" для Id. По идее идентификатор и так уникален.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.