powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / NHibernate merge необновляемых полей
1 сообщений из 1, страница 1 из 1
NHibernate merge необновляемых полей
    #37512480
Kurono-kun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
Имеются две сущности InformationItem и FileModel. FileModel связана с InformationItem один ко многим.
Сущность InformationItem необходимо обновлять таким образом, чтобы свзанные с ней объекты каскадно обновлялись и при необходимости удалялись. Также в связанной сущности имеются поля, которые должны только добавляться и не должны обновляться.
Ниже маппинг этих сущностей.
Код: 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.
        public InformationItemsMap()
        {
            this.Table("Information");

            this.Id(m => m.InformationId);

            this.Map(m => m.Name);
            
            this.HasMany(m => m.Files)
                .KeyColumn("InformationId")
                .Inverse()
                .Cascade.All();
        }

        public FilesMap()
        {
            this.Table("Files");

            this.Id(m => m.FileId);

            this.Map(m => m.FileName);
            this.Map(m => m.ContentType)
                .Not.Update();
            this.Map(m => m.ContentLength)
                .Not.Update();
            this.Map(m => m.Content)
                .Length(int.MaxValue)
                .LazyLoad()
                .Not.Update();

            this.Map(m => m.InformationId).ReadOnly();

            this.References(m => m.Information)
                .Column("InformationId")
                .Fetch.Join()
                .Cascade.None();
        }

        public override void Update(InformationItem item)
        {
            item.BuildStructure();

            var oldModel = this.Get(item.InformationId);

            foreach (var file in oldModel.Files.Where(f => !item.Files.Any(i => i.FileId == f.FileId)))
                session.Delete(file);

            session.Merge(item);
        }

Если делать Merge, выдается исключение "Объект не соответствует конечному типу.". Если убрать Not.Update() то Merge происходит нормально, без исключения.
Код: plaintext
1.
2.
3.
4.
5.
        public override void Update(InformationItem item)
        {
            item.BuildStructure();

            session.Update(item);
        }
Если делать просто Update, объект обновляется нормально, но тогда непонятно как удалить связанные объекты.

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


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