|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
Как организовывать логгирование вставленных записей, в условиях когда записи вставляются в рамках большой транзакции, и рано ее комитить ? Если создается юзер, и нужно бы в логер отправить информацию с новым ID. А после создания юзера будем еще что-то создавать - роли ему или еще что-то, уже в следующих методах. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 14:31 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
Предположим в чистом Ado.Net код будет таким: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Да нужно минимизировать длительность транзакции и т.д. Но в итоге залогируем все, что нам нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 14:40 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
Fungus, Вы ещё отправку уведомления по почте внутрь транзакции добавьте :) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 14:43 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
skyANA, Логгирование не нужно ? Или в триггеры пихать, размазывая логику. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 14:46 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
Fungus, нужно, но зачем его внутрь транзакции засовывать? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 14:55 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
skyANA, а, вы про то, что логгирование происходит в этой же транзакции ? В принципе да, это можно вынести в отдельную автономную транзакцию, и комитить ее отдельно. Если рабочая транзакция отвалится по ошибке, то транзакция логирования должна будет закомитится более менее гарантировано. Но это все детали. Основной вопрос, как делать логгирование в EF. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 15:00 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
FungusКак получить ID вставленной записи (для лога) если транзакцию рано завершать Добавить колонку CorrelationId (GUID) и прозрачно с ней работать в логике. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 15:01 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
Смузи, Можно подробней пожалуйста ? не понял. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 15:04 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
FungusskyANA, а, вы про то, что логгирование происходит в этой же транзакции ? В принципе да, это можно вынести в отдельную автономную транзакцию, и комитить ее отдельно. Если рабочая транзакция отвалится по ошибке, то транзакция логирования должна будет закомитится более менее гарантировано. Но это все детали. Основной вопрос, как делать логгирование в EF. А зачем делать логгирование в EF? Берёте log4net, NLog, или Serilog, или EnterpriseLibrary.Logging и используете. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 15:04 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 15:06 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 15:10 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
skyANA, Суть вопроса в том, что получить Id вставленной записи мы можем непосредственно вставив сущность в БД, и считав ее через SCOPE_IDENTITY(). Но EF же не вставит пока не вызовем SaveChanges, который произойдет гораздо позже. И как получить ID вставленной записи в том месте, где код создает ее (чтобы тут же вставить в лог) ? Или как вообще реализовать логгирование всех создаваемых сущностей. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 15:11 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
Fungus, а в чём проблема вызвать SaveChanges? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 15:14 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
Смузи, Что вообще за ID корелляции, и как он относится к логгированию в программе ? Правильно ли я понимаю, что вы предлагаете создавать псевдо ключ в виде GUID. А потом, после SaveChanges, собирать по базе все вставленные сущности имея на руках эти псевдо ключи и вычисляя реальный id ? И это все вместо этих строчек кода: Код: c# 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 15:15 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
Что за логгер? К примеру в энлоге: http://nlog-project.org/2015/08/31/nlog-4-1-0-is-now-available.html Trace Activity Id Layout Renderer: ${activityid} write the System.Diagnostics his trace correlation id. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 15:17 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
skyANAFungus, а в чём проблема вызвать SaveChanges? SaveChanges это же комит транзакции. Если мы вставим Юзера, сделаем SaveChanges, а при вставке ролей упадем по ошибке, то как откатывать вставленного юзера ? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 15:19 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
FungusПравильно ли я понимаю, что вы предлагаете создавать псевдо ключ в виде GUID. А потом, после SaveChanges, собирать по базе все вставленные сущности имея на руках эти псевдо ключи и вычисляя реальный id ? Да, это ключ логгера. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 15:19 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 15:20 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
FungusskyANAFungus, а в чём проблема вызвать SaveChanges? SaveChanges это же комит транзакции. Если мы вставим Юзера, сделаем SaveChanges, а при вставке ролей упадем по ошибке, то как откатывать вставленного юзера ? Еще раз, какая задача решается, транзакции или логирование? Это две перпендикулярные плоскости. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 15:20 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
FungusЕсли мы вставим Юзера, сделаем SaveChanges, а при вставке ролей упадем по ошибке, то как откатывать вставленного юзера ? Так это нужно делать одним SaveChanges. Транзакция у EF будет, но она будет неявная. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 15:23 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
СмузиFungusПравильно ли я понимаю, что вы предлагаете создавать псевдо ключ в виде GUID. А потом, после SaveChanges, собирать по базе все вставленные сущности имея на руках эти псевдо ключи и вычисляя реальный id ? Да, это ключ логгера. вы серьезно ? Предлагаете реализовать такой велосипед: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
По моему это какая то глупость. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 15:25 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
FungusПо моему это какая то глупость. Correlation - это атрибут логгера, а не User. Я же написал выше. Во-вторых, зачем тут TransactionScope? Еще раз, в контекст добавляй юзера, прикручивай к нему роли и сохраняйся. Пора бы уже выучить EF. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 15:28 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
СмузиЕще раз, какая задача решается, транзакции или логирование? Задача, реализовать на EF такой код Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
так, чтобы в итоге в логе оказались ID юзера и назначенных ему записей в таблице UserRoles. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 15:28 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
Я выше написал что делать. Учить EF и выбрать готовый логгер, как советовал skyANA. Больше нечего добавить. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 15:32 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
FungusskyANAFungus, а в чём проблема вызвать SaveChanges? SaveChanges это же комит транзакции. Если мы вставим Юзера, сделаем SaveChanges, а при вставке ролей упадем по ошибке, то как откатывать вставленного юзера ? Нормально откатится. http://stackoverflow.com/questions/17523568/entity-framework-retrieve-id-before-savechanges-inside-a-transaction ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 15:44 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
Учимся работать с EF и в 99% случаев вообще забываем про транзакции. SQL Код: sql 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.
Код: 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.
LogOpened connection at 24.11.2016 15:58:54 +03:00 Started transaction at 24.11.2016 15:58:54 +03:00 INSERT [dbo].[Templates]([Name]) VALUES (@0) SELECT [TemplateId] FROM [dbo].[Templates] WHERE @@ROWCOUNT > 0 AND [TemplateId] = scope_identity() -- @0: 'test' (Type = String, Size = 50) -- Executing at 24.11.2016 15:58:54 +03:00 -- Completed in 0 ms with result: SqlDataReader INSERT [dbo].[Questions]([ParentId], [Name], [TemplateId]) VALUES (NULL, @0, @1) SELECT [QuestionId] FROM [dbo].[Questions] WHERE @@ROWCOUNT > 0 AND [QuestionId] = scope_identity() -- @0: 'test' (Type = String, Size = 50) -- @1: '1008' (Type = Int32) -- Executing at 24.11.2016 15:58:54 +03:00 -- Failed in 54 ms with error: The INSERT statement conflicted with the CHECK constraint "CK_Questions". The conflict occurred in database "Test", table "dbo.Questions", column 'Name'. The statement has been terminated. Closed connection at 24.11.2016 15:58:54 +03:00 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 16:01 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
Смузи, ctx.Database.Log просто выводит всю кучу отправленных SQL запросов насколько я знаю. Каким образом мне из этой кучи гхм... вычерпнуть ID вставленного юзера ? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 16:31 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
Fungus, ctx.Database.Log нужен для того, чтобы показать про неявную транзакцию в батче, это не логгер :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 16:38 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
skyANA, Нууууу ок. Делать после каждой вставки юзера SaveChanges чтобы получить его ID мне кажется слишком уж, но раз другого пути нет.... Я опасаюсь, того, что эта операция достаточно дорогостоящая. EF смотрит change tracking, вычисляет изменилось ли что-то и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 16:41 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 16:45 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
FungusСмузи, Зачем тогда предлагать этот вариант, если я описал что ищу тут 19930073 и тут 19930369 . Какой вариант? Тебе тылдычат, что не нужно никаких транзакций, EF всё сам сделает. Пример это демонстрирует. А по поводу логирования ошибок тебя послали изучать популярные логгеры. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 16:54 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
FungusskyANA, Нууууу ок. Делать после каждой вставки юзера SaveChanges чтобы получить его ID Это клиника... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 16:55 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
Смузи, А где я говорил про логгирование ошибок, можете показать в том коде где я описывал то, что мне нужно ? Человек видит то, что он хочет видеть. Вы захотели увидеть про логгирование ошибок ? :) Я говорил про логгирование ID сущностей, создаваемых в БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 17:00 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
СмузиFungusskyANA, Нууууу ок. Делать после каждой вставки юзера SaveChanges чтобы получить его ID Это клиника... Вы продолжаете искать "логгирование ошибок" в моих сообщениях, и смотрите на окружающий мир сквозь эту призму. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 17:01 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
FungusСмузи, А где я говорил про логгирование ошибок, можете показать в том коде где я описывал то, что мне нужно ? Человек видит то, что он хочет видеть. Вы захотели увидеть про логгирование ошибок ? :) Я говорил про логгирование ID сущностей, создаваемых в БД. Какая принципиальная разница, что логировать? FungusВы продолжаете искать "логгирование ошибок" в моих сообщениях, и смотрите на окружающий мир сквозь эту призму. См. выше. P.S. По существу все ответы были даны. Учить EF и логгеры. Что-то еще? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 17:28 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
Fungus, зачастую логируют то, что Вам надо вообще не в ту же базу, где пользователь создаётся. Или вообще не в базу. Завтра Вы откроете для себя (или тот, кто будет анализировать залогированные данные) Elasticsearch и красивые графики в Kibana и что будете делать? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 17:34 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
Смузи, Разница есть. Но уже не важно. skyANA ответ дал, хоть он мне и не нравится, но хотя бы рабочий. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 17:34 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
Или к примеру на каждой машине логгер пишет в свой файлик, в фоне эти файлики обрабатываются и складываются в одно место. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 17:37 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
FungusСмузи, Разница есть. Какая? FungusskyANA ответ дал, хоть он мне и не нравится, но хотя бы рабочий. Ты даже не понял пример, демонстрирующий работу EF с транзакциями. Что тебе опять не нравится-то? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 17:39 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
Смузи, Разница в том, что логгирование ошибки это такой алгоритм: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
а мне нужно это (по мотивам от skyANA ) Код: c# 1. 2. 3. 4. 5. 6. 7.
Мне нужно НЕ выполнить транзакцию и узнать были ли проблемы, Код: c# 1.
в процессе выполнения транзакции выяснить ID созданных сущностей (Юзер, Роль) и уже с ними делать что хочу ( например залогировать сразу, или например вставить в некий список, чтобы залогировать отдельно). Ой. Ладно. Можно закрывать вопрос, ответ я получил. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 17:46 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
Fungus, в чём проблема создать сначала Юзера, Роли, закоммитить, а потом уже логировать? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 17:55 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
FungusМне нужно НЕ выполнить транзакцию и узнать были ли проблемы Чтобы узнать, были ли проблемы, нужно обработать исключение. Поэтому без catch вообще никак. Fungusв процессе выполнения транзакции выяснить ID созданных сущностей (Юзер, Роль) Зачем выяснять ID сущностей, если они еще физически не добавлены в БД (и могут быть вообще не добавлены)? Fungus например залогировать сразу, или например вставить в некий список, чтобы залогировать отдельно). Еще раз, какой ID ты собираешься логировать, если его еще нет физически? P.S. Весь этот бред малоинтересен, всё это от незнания как EF, так и архитектуры логирования. Поэтому в десятый раз рекомендую изучить EF и логгеры с их возможностями. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 17:55 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
Fungus например залогировать сразуРискуете поймать дедлок судя по тому, что хотите логировать идентификатор пользователя до коммита транзакции :) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 17:58 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
skyANAFungus, в чём проблема создать сначала Юзера, Роли, закоммитить, а потом уже логировать? В сложности кода. Вот есть у нас такой простой AdoNet код: Код: c# 1. 2.
Вы предлагаете его размазать в разные места программы. В одном месте вставлять юзера, а когда-то потом, где-то после чекина начинать вычислять какие там ID нагенерились, и логировать их. Как вы себе это представляете вообще. Это наверное похоже на сложности программирование через Task.ContinueWith пожалуй. Когда в ContinueWith нам нужно выяснить что там было в начале передано первой задаче вообще. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 17:59 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
FungusskyANAFungus, в чём проблема создать сначала Юзера, Роли, закоммитить, а потом уже логировать? В сложности кода. Упрощай. FungusВот есть у нас такой простой AdoNet код: Код: c# 1. 2.
Вы предлагаете его размазать в разные места программы. Мы предлагаем выкинуть этот код на помойку и написать новый, правильный. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 18:01 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
FungusskyANAFungus, в чём проблема создать сначала Юзера, Роли, закоммитить, а потом уже логировать? В сложности кода. Вот есть у нас такой простой AdoNet код: Код: c# 1. 2.
Вы предлагаете его размазать в разные места программы. В одном месте вставлять юзера, а когда-то потом, где-то после чекина начинать вычислять какие там ID нагенерились, и логировать их. Как вы себе это представляете вообще. Это наверное похоже на сложности программирование через Task.ContinueWith пожалуй. Когда в ContinueWith нам нужно выяснить что там было в начале передано первой задаче вообще. Я ничего не предлагаю. Я у Вас спрашиваю, в чём у Вас сложности :) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 18:02 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
Вот где тут 19930073 что-то размажется, если вынести логирование за пределы транзакции? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 18:03 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
skyANA, Размажется. ладно я понял, что все не просто. Буду думать. Направление вы дали. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 18:06 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
Да и на мой взгляд код должен быть другим: Код: c# 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 18:11 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
skyANA, В принципе это именно то, что мне и нужно.Похоже я ошибся разбив добавление Юзера и Ролей на отдельный функционал. Ввиду чего и возникла проблема "собрать все вместе по итогу". Поэтому и пришлось делать логирование непосредственно после вставки каждой сущности.Пожалуй ваше решение это прекрасный пример того, как нужно сделать правильно: выделить задачу как одну функцию, и в ее конце, имея на руках готовый итоговый результат, его и логировать. Мне нужно переосмыслить свой подход. Спасибо за помощь. Похоже я так и не нашел пока нормальный пример правильно построенного приложения с правильным разделением на слои и архитектурой. Где все эти вещи уже есть. Оттого и страдаю фигней, пытаясь их придумать самостоятельно. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 18:22 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
Хм, почитайте: Предметно-ориентированное проектирование (DDD). Структуризация сложных программных систем И рекомендуемый вместе с этой книжкой посмотрите. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 18:31 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
skyANA, Начитался уже много чего. Клепаю велосипеды теперь :) Результат вот он. Про эту книгу я знаю, а также знаю что она слишком заумная и без примеров, и что другой добрый человек даже выпустил другую книгу, где привел примеры приложений того, как нужно писать по данной книге. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 18:38 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
FungusСмузи, А где я говорил про логгирование ошибок, можете показать в том коде где я описывал то, что мне нужно ? Человек видит то, что он хочет видеть. Вы захотели увидеть про логгирование ошибок ? :) Я говорил про логгирование ID сущностей, создаваемых в БД . тогда "логи" - это такие же domain, как и все остальные. и работа с ними ничем не отличается от всех остальных ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 18:53 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
fsharp_fsharpFungusСмузи, А где я говорил про логгирование ошибок, можете показать в том коде где я описывал то, что мне нужно ? Человек видит то, что он хочет видеть. Вы захотели увидеть про логгирование ошибок ? :) Я говорил про логгирование ID сущностей, создаваемых в БД . тогда "логи" - это такие же domain, как и все остальные. и работа с ними ничем не отличается от всех остальных эту часть, в силу её однотипности, можно вынести в аспект. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 18:54 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
fsharp_fsharp, Возможно. Но все же не ясно. Если Entity записи лога выглядит иначе чем Entity, то как их увязать вместе ? Т.е. когда это разные сущности, но связанные своим ID, к примеру, не знаю. Можете пример кода подкинуть, я все же не эксперт в EF ) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 19:08 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
FungusskyANA, В принципе это именно то, что мне и нужно.Похоже я ошибся разбив добавление Юзера и Ролей на отдельный функционал. Ты издеваешься? Тебе именно это и предлагали изначально, даже пример запилили 19930542 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 19:53 |
|
EF. Как получить ID вставленной записи (для лога) если транзакцию рано завершать ?
|
|||
---|---|---|---|
#18+
FungusЕсли Entity записи лога выглядит иначе чем Entity, то как их увязать вместе ? Тебе битый день уже тылдычат Save (успешно) => потом запись в лог Save (не успешно) => потом запись в лог ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 19:55 |
|
|
start [/forum/topic.php?all=1&fid=20&tid=1400196]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
82ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 195ms |
0 / 0 |