Свободная проблема Nhibernate - PullRequest
       5

Свободная проблема Nhibernate

1 голос
/ 18 августа 2011

У меня есть это в моей сущности:

public virtual Iesi.Collections.Generic.ISet<long> Blas { get; set; }

и это для моего отображения:

mapping.HasMany(x => x.Blas).AsSet().Element("Value", m => m.Type<long>()); 

Это создает соответствующие таблицы, и я добавляю данные следующим образом:

X.Blas = new Iesi.Collections.Generic.HashedSet<long>();
X.Blas.Add(some_long);

Это добавляет значения к объекту, но значения в Blas никогда не сохраняются (все остальное в X).

Кто-нибудь может увидеть что-то не так?

Спасибо.

Christian

Ответы [ 3 ]

2 голосов
/ 19 августа 2011

если X загружается через сеанс, то blas инициализируется коллекцией отслеживания изменений.Так что не перезаписывайте это.Попробуйте X.Blas.Clear(); вместо X.Blas = new Iesi.Collections.Generic.HashedSet<long>();

1 голос
/ 18 августа 2011

Попробуйте добавить настройку каскада.

mapping.HasMany(x => x.Blas).AsSet()
       .Element("Value", m => m.Type<long>())
       .Cascade.AllDeleteOrphan();

Также вы можете просто использовать ICollection и обычный Hashset вместо Iesi.При условии, что вы используете хотя бы версию 3 (она может работать и с 2.1.2 или выше)

0 голосов
/ 22 августа 2011

Вы должны следовать правильной объектно-ориентированной инкапсуляции, чтобы избежать подобных проблем, пример в моем посте здесь: Как мне сопоставить коллекцию, доступную через свойство только для чтения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...