|
NHibernate: генерация кастомного ID
|
|||
---|---|---|---|
#18+
МСУ, ну если - Можно сделать это через триггер, но это зло и некроссплатформенно я тогда ретируюсь, и снимаю свои пожелания.)) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2012, 17:22 |
|
NHibernate: генерация кастомного ID
|
|||
---|---|---|---|
#18+
Где-то в степиМожно сделать это через триггер, но это зло и некроссплатформенно Еще раз всматриваемся в задачу :) МСУЯ хочу, например, такой ID: [ddMMyyyy][sequence_num][запрос_из_вебсервиса_получение_некоего_спецномера][случайный_символ_из_строки_АБВГДЕЁЖЗИКЛМНОПРСТУФХЦЧШЩЭЮЯ][текущее_время] P.S. Думал, что предложишь еще вариант - не завязываться на ID, а использовать для этого другое поле. А это уже новая пища для холивара переопределения айдишников. А ты сдался... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2012, 17:59 |
|
NHibernate: генерация кастомного ID
|
|||
---|---|---|---|
#18+
МСУ, я и думал что автор имеет ввиду дополнительное поле, а он вишь хочет упихнуть все в одно. А что, в принципе - Можно сделать это через триггер, но это зло и некроссплатформенно, это жесткий аргумент, и в прочем я с ним на сто процентов согласен, тут получается что кастомная генерация. я то вообще на сервере решил исполнить что то в таком виде id= хешбазы |хештаблцы| хешguidзаписи а потом and_ом проверять что за база, что за таблица, В прочем мог бы быть еще вариант - служебная таблица, с индексаторами всех записей базы аки лонг, но она бы не смотрелась в контексте всех хранилищ, а так я за кросплатформенность однозначно, поэтому и слинял )) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2012, 18:39 |
|
NHibernate: генерация кастомного ID
|
|||
---|---|---|---|
#18+
вообще то тут бы гуиды смотрелись ваще великолепно, ибо они глобальны для всех галактик ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2012, 18:44 |
|
NHibernate: генерация кастомного ID
|
|||
---|---|---|---|
#18+
Что то щас подумал о другом поле, в принципе,( отрываясь от желания та) не плохая мысль, еще его вынести из сущности что бы не мешалось под ногами, в виде явного интерфейса, или суб класса. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2012, 19:01 |
|
NHibernate: генерация кастомного ID
|
|||
---|---|---|---|
#18+
Короче говоря, я почти дошел до того, что хотел. Вот код: Код: c# 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.
Единственное, МСУ, а как передать в генератор параметр? Я хочу имя таблицы передавать, чтобы для каждой таблицы использовался свой сиквенс. Вот в методе Generate есть какой-то object obj. Наверное, не просто так он там. Я погуглил опять же - не нашел ниче:( Подскажешь, может быть? На Fluent... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2012, 19:53 |
|
NHibernate: генерация кастомного ID
|
|||
---|---|---|---|
#18+
Где-то в степиЧто то щас подумал о другом поле, в принципе,( отрываясь от желания та) не плохая мысль, еще его вынести из сущности что бы не мешалось под ногами, в виде явного интерфейса, или суб класса. а передачу оформить в виде Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2012, 19:59 |
|
NHibernate: генерация кастомного ID
|
|||
---|---|---|---|
#18+
Alexvmk http://docs.jboss.org/hibernate/orm/3.6/javadocs/org/hibernate/id/IdentifierGenerator.html#generate(org.hibernate.engine.SessionImplementor, java.lang.Object) Parameters: object - the entity or toplevel collection for which the id is being generated Returns: a new identifier ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2012, 20:49 |
|
NHibernate: генерация кастомного ID
|
|||
---|---|---|---|
#18+
Ребята, поздравите меня! ) Я наконец-то закончил с этой задачей! Решил не плодить последовательностей (sequences). Сделал один, на все таблицы. Его уж хватит, он длиной до 19-ти цифр. Единстевнный минус ID записей будет большой плодиться. Но ничег острашного. Итоговый код: Код: c# 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.
Спасибо большое всем, кто отозвался и помог! Особенно МСУ. P.S. Почему с сайта SQL.ru так быстро выкидывает, и приходиться заново аутентифицироваться!??! Тут уж не банк-онлайн же! Зачем такая защита!? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2012, 22:46 |
|
NHibernate: генерация кастомного ID
|
|||
---|---|---|---|
#18+
AlexvmkВсем привет! Есть следующая задачка. Есть распределенная POSTGRESQL БД. То есть есть ЦБД и множество БД. Все они имеют одинаковую структуру и данные в них синхронизируются. Соответственно встала задача уникальности каждой записи в таблице в рамках всей распределенной БД. Программа, которая работает с базами данных написана на C# и использует Fluent NHibernate. То есть все общение с данными через NHibernate происходит. Так вот задачу уникальности я решил делать так: у каждой БД есть номер org_id. Также для таблиц есть сиквенс. Генерим ID с помощью сиквенса, а далее вычисляем окончательное значение ID, как ID * 1000 + org_id. Все это генерим в Before Insert триггерах к таблицам. ... Мда, мозг сломать можно, это все делается либо через гуид, либо составной идентификатор (ид-записи, ид-базы) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2012, 23:13 |
|
NHibernate: генерация кастомного ID
|
|||
---|---|---|---|
#18+
Гуиды не люблю. а я и делаю составной идентификатор. Давайте, предлагайте свое решение. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2013, 17:26 |
|
NHibernate: генерация кастомного ID
|
|||
---|---|---|---|
#18+
AlexvmkГуиды не люблю. а я и делаю составной идентификатор. Давайте, предлагайте свое решение. таки составной идентификатор УЖЕ уникальный: Код: c# 1.
при этом в Fluent NHibernate надо: 1. замаппить как CompositeId, указав две колонки 2. переопределить Equals() и GetHashCode() для класса сущности, GetHashCode можно например так: Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2013, 22:46 |
|
|
start [/forum/topic.php?fid=17&msg=38078433&tid=1350135]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
146ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 16ms |
total: | 260ms |
0 / 0 |