|
Ошибка с типом колонки при работе в Entity Framework в C#
|
|||
---|---|---|---|
#18+
Добрый день! Использую библиотеку FirebirdSql.Data.FirebirdClient 6.6.0. Приложение на .Net Core. В таблице задан тип колонки blob subtype 1. Провайдер видит это поле как текстовое и строку в UTF-8 размером более 8192 сохранить не может- stack overflow... Тот же fireDAC в Delphi прекрасно обрабатывает это поле, позволяя писать в него данные как в блоб, а не в строку. Пока что не получается заставить entity framework писать в такой блоб большие строки (либо как строки, либо как бинар.данные- не важно). Кто сталкивался с такой задачей- что можно сделать в данной ситуации? -- Дмитрий ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2019, 12:41 |
|
Ошибка с типом колонки при работе в Entity Framework в C#
|
|||
---|---|---|---|
#18+
microNstack overflow Это не сообщение об ошибке Firebird. Так что отлаживайся. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2019, 12:50 |
|
Ошибка с типом колонки при работе в Entity Framework в C#
|
|||
---|---|---|---|
#18+
microN, если это ошибка .NET провайдера, а не твоего приложения пиши сюда http://tracker.firebirdsql.org/browse/DNET ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2019, 13:15 |
|
Ошибка с типом колонки при работе в Entity Framework в C#
|
|||
---|---|---|---|
#18+
Может быть понятнее станет: В модели данных описываю: [Table("table")] public class Test { [Key][Required] public long Id {get; set; } [Column("raw_data")] public byte[] raw_data {get; set; } } В БД поле raw_data описано как: BLOB SUB_TYPE 1 SEGMENT SIZE 100 CHARACTER SET UTF8; Т.е. это BLOB. Делаю: var data = db.Test.Find(id); В Trace вижу запрос: SELECT "e"."ID", "e"."RAW_DATA" FROM "TABLE" AS "e" WHERE "e"."ID" = CAST(@__get_Item_0 AS BIGINT) На этом месте падает с exception: Unable to cast object of type 'System.String' to type 'System.Byte[]'. Видимо, проблема в драйвере. Как его заставить работать с блобом как с блобом, а не строкой? Если я поставлю тип не byte[], а string, то оно будет работать, но размер строки ограничен 8192 байтами, что не устраивает. Отсюда и вопрос, озвученный выше, возник. -- Дмитрий ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2019, 13:48 |
|
Ошибка с типом колонки при работе в Entity Framework в C#
|
|||
---|---|---|---|
#18+
microN BLOB SUB_TYPE 1 SEGMENT SIZE 100 CHARACTER SET UTF8; если надо работать с байтами, то обычно BLOB SUB_TYPE 0 ставят. И да похоже сообщить в трекер придётся ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2019, 13:52 |
|
Ошибка с типом колонки при работе в Entity Framework в C#
|
|||
---|---|---|---|
#18+
microNВидимо, проблема в драйвере. Как его заставить работать с блобом как с блобом, а не строкой? Нет, он законно отказывается конвертировать в байты строку, которую ты ему пихаешь. Не пихай строку, пихай байты. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2019, 14:02 |
|
Ошибка с типом колонки при работе в Entity Framework в C#
|
|||
---|---|---|---|
#18+
Симонов Денис, Денис, спасибо за наводку на трекер. Я завел там багу. Общий вопрос: Чтобы решить проблему сейчас, может есть какой-то workaround? -- Дмитрий ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2019, 15:10 |
|
Ошибка с типом колонки при работе в Entity Framework в C#
|
|||
---|---|---|---|
#18+
microNКак его заставить работать с блобом как с блобом, а не строкой? microNЧтобы решить проблему сейчас, может есть какой-то workaround? cast (... as blob subtype 0) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2019, 15:18 |
|
Ошибка с типом колонки при работе в Entity Framework в C#
|
|||
---|---|---|---|
#18+
Ivan_Pisarevsky, не прокатит, ибо запрос пишется самим entity framework ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2019, 15:41 |
|
Ошибка с типом колонки при работе в Entity Framework в C#
|
|||
---|---|---|---|
#18+
У меня сработал такой обходной путь: db.Test.FromSql("...cast(raw_Data as blob sub_type 0)...") косяк при этом в том, что формируется запрос вида select from select. Мой селект entity оборачивает своим селектом. Коряво, но работает. Примечательно то, что запись при этом происходит без ошибок- sub_type 1 тут уже нормально стыкуется с типом byte[]. -- Дмитрий ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2019, 16:26 |
|
Ошибка с типом колонки при работе в Entity Framework в C#
|
|||
---|---|---|---|
#18+
microNДобрый день! Использую библиотеку FirebirdSql.Data.FirebirdClient 6.6.0. Приложение на .Net Core. В таблице задан тип колонки blob subtype 1. Провайдер видит это поле как текстовое и строку в UTF-8 размером более 8192 сохранить не может- stack overflow... Кто сталкивался с такой задачей- что можно сделать в данной ситуации? По варварски набросанный тест с использованием другого провайдера для EF показывает, что задача вполне решабельна. Пример Код: 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. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70.
LOG Код: 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. 68. 69. 70. 71. 72.
Так что дергай своего "производителя" адаптера для EF - пусть разбирается :) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2019, 16:33 |
|
|
start [/forum/topic.php?fid=40&fpage=24&tid=1560741]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 299ms |
total: | 439ms |
0 / 0 |