|
WCF+Nhibernate+Oracle
|
|||
---|---|---|---|
#18+
Добрый день, Господа! Хочу поделиться своей проблемой и найти ее решение. Есть некая служба на WCF c методом который принимает список объектов которые содержат коллекцию дочерних объектов. Суть метода состоит в том, чтобы вставлять и обновлять переданные объекты. Связь с БД осуществляется посредством Fluent Nhibernate. БД Oracle. Проблема возникает при обновлении сущностей в базе, а именно генерируется новый идентификатор записи т. е. происходит не обновление, а новая вставка. Код метода: Код: 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.
Я новичек в Nhibernate, до этого работал(аю) с EF, и никак не могу понять в чем собственно обстоит дело. Буду весьма признателен за все конструктивные предложения. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2011, 14:29 |
|
WCF+Nhibernate+Oracle
|
|||
---|---|---|---|
#18+
Hold Fast, 1. Покажите маппинг Person. 2. Зачем вы делает это: Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2011, 16:06 |
|
WCF+Nhibernate+Oracle
|
|||
---|---|---|---|
#18+
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.
Как то так... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2011, 16:55 |
|
WCF+Nhibernate+Oracle
|
|||
---|---|---|---|
#18+
SolYUtor, Код: plaintext
это необходимо для того чтобы понять какую сущность обновлять в базе. потому что идентификаторы которые приходят с клиента и которые хранятся в БД отличаются. Приходится сохранять клиентский идентификатор в отдельном поле ARM_ID и при обновлении находить сущность по нему и брать идентификатор БД свойство PKId ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2011, 16:59 |
|
WCF+Nhibernate+Oracle
|
|||
---|---|---|---|
#18+
Hold Fast, на вид всё выглядит правильно. Триггер точно не шалит? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.09.2011, 22:24 |
|
WCF+Nhibernate+Oracle
|
|||
---|---|---|---|
#18+
SolYUtor, Оказалось вся проблема в этом: Код: plaintext 1. 2. 3. 4.
и в этом Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
нужно обнулять к каждого объекта Relative ссылку на персону, либо перенастроить маппинг, чтобы не было каскадного удаления. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2011, 10:32 |
|
WCF+Nhibernate+Oracle
|
|||
---|---|---|---|
#18+
Hold Fast, Да, как-то под вечер упустил момент с каскадным удалением. В таких случаях надо внимательнее следить, чтобы каскадные операции относились только к корню агрегата. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2011, 12:21 |
|
WCF+Nhibernate+Oracle
|
|||
---|---|---|---|
#18+
SolYUtor, Благодарю за участие. Честно говоря Hibernate приятно удивил глубиной своей настройки, инструмент не детский :) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2011, 14:08 |
|
|
start [/forum/topic.php?fid=17&fpage=41&tid=1350626]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 136ms |
0 / 0 |