Что может быть причиной ошибки? | |
---|---|
Александр Жевелев Автор Сообщений: 2723 Откуда: Новосибирск Дата регистрации: 09.10.2003 |
c#
иногда с некоторых рабочих мест при выполнении оператора
Цитата: не могу понять возможную причину. Воспроизвести(повторить) ошибку на другом рабочем месте при равных условиях не удается, хотя исходные данные известны Исправлено 1 раз(а). Последнее : Александр Жевелев, 01.12.17 11:32 |
Re: Что может быть причиной ошибки? | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Полагаю что что-то не то с уникальными ключами в модели. Или в связях сущностей (FK).
Естественно не имея БД и полного исходного кода можно только гадать что там не так... А что не воспроизводится - значит на это влияют настройки той сессии или БД (если зависит от БД а не конкретного клиента) - скажем способ сравнения строк (если зачем то используются строковые ключи). P.S. Китайских идентификаторов ещё добавьте для полного счастья. А лучше буковки C и о в этом #$%^ пропишите латиницей. Пускай потом наследник этого кода застрелиться ------------------ WBR, Igor |
Re: Что может быть причиной ошибки? | |
---|---|
Александр Жевелев Автор Сообщений: 2723 Откуда: Новосибирск Дата регистрации: 09.10.2003 |
База данных одна у всех пользователей. Дистрибутив программы у всех пользователей одинаков. фрагмент модели и таблица в базе[attachment 28622 su_table_thumb.jpg][attachment 28623 basa_table_thumb.jpg] |
Re: Что может быть причиной ошибки? | |
---|---|
Александр Жевелев Автор Сообщений: 2723 Откуда: Новосибирск Дата регистрации: 09.10.2003 |
для наследников есть описание проекта на 219 страницах дополнительные исследования показали что ошибка возникает и на других таблицах, но всегда на FirstOrDefault . Ошибка возникает достаточно редко(2- 3 раза в месяц) у 1-3 пользователей из 30 ежедневно использующих программу. в качестве шаманского действа установил у таблиц используемых только для чтения MergeOption.NoTracking буду наблюдать далее... Все ошибки мне прилетают на почту - буду следить. Исправлено 1 раз(а). Последнее : Александр Жевелев, 04.12.17 09:10 |
Re: Что может быть причиной ошибки? | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Ключ таблицы дробное число :puke:
Архитектора - расстрелять. Вероятно в цепочке decimal <-> ADO.NET-ный внутренний тип <-> MSSQL-ный numeric происходит "потеря точности". Начинает "плясать" младший знак, и вроде как "разные" элементы получают "одинаковый" ключ, на что и ругается (совершенно справедливо) внутренний Dictionary контекста (отслеживающий "связанные" с контекстом сущности). Впрочем, я не исключаю что MS в принципе не тестировал сценарий с дробным числом в качестве первичного ключа У нас, насколько я помню, были сходные проблемы с дробными числами - при сохранении детектился "конфликт" именно из за проблем округления. НО, это было для "обычных" полей, конечно же, да и оракловский number очень сильно отличается в реализации от MSSQL-ного decimal/numeric - по крайней мере на уровне провайдера Тут пишут конкретно про проблемы EF-decimal-MSSQL. Это ничуть не оправдывает использование смеси кириллицы и латиницы в идентификаторах... ------------------ WBR, Igor |
Re: Что может быть причиной ошибки? | |
---|---|
Александр Жевелев Автор Сообщений: 2723 Откуда: Новосибирск Дата регистрации: 09.10.2003 |
Спасибо, Игорь! Буду думать и читать.В конкретном случае дробный ключ это всегда рукотворное данное никогда не вычисляемое.(Чертеж-исполнение в конструкторской документации у нас принято хранить в виде чертеж.исполнение(Numeric(13,2) ) Смущает что аналогичные ошибки прилетали и на Numeric(10,0). Все равно есть направление для дальнейших исследований. Спасибо. (в коде программ кириллицы нигде нет - это только имена папок) |
Re: Что может быть причиной ошибки? | |
---|---|
spinz Сообщений: 5263 Дата регистрации: 21.01.2016 |
Чота кажется более логичным разбить эту связку на два поля |
Re: Что может быть причиной ошибки? | |
---|---|
ВладимирС Сообщений: 1693 Дата регистрации: 03.11.2005 |
Я так же думаю... Причем поля д.б. целочисленные, ИМХО. Либо использовать текстовое поле, с дальнешим парсингом. Исправлено 1 раз(а). Последнее : ВладимирС, 05.12.17 07:52 |
Re: Что может быть причиной ошибки? | |
---|---|
pasha_usue Сообщений: 3649 Откуда: Е-бург Дата регистрации: 06.10.2006 |
Фигня. Лучше оставить целое. Чертеж всегда инкрементировать на 100, а исполнение - на единицу. А при выводе - форматировать. А можно вообще всегда запрашивать с сервера сразу и ключ и представление.
|
Re: Что может быть причиной ошибки? | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
1) "Имена папок" по умолчанию влияют на пространство имён, в которые помещаются соответствующие классы - так что кириллица в идентификаторах таки ЕСТЬ. Ибо идентификатор это полное имя класса, включая пространство имён - не только его хвост. Конечно же можно вручную всегда перебивать namespace, но как по мне, так проще соблюдать рекомендованную нотацию применимо и к подпапкам внутри проектов... Впрочем, даже не разбираясь особо в тонкостях нотаций, просто посмотри на приведенный стэктрейс - имена в первых строках (кроме псевдо-имени lambda_method) и в 2 последних - очевидна же "смесь стилей"
2) Если это поле по сути "шифр" то всё же лучше сделать поле строковым и использовать шаблонный (по маске) ввод (если оно вводится руками, а не генерируется - впрочем, можно и генератор "уникальных номеров" замутить, если это необходимо). Можно, конечно, и домножать на 100 и хранить как целое - но это только если есть железная гарантия что завтра (или через 5 лет, когда все уже надёжно всё забудут) не потребуется отводить под вторую часть 3 знака или больше, или вдруг не захотят буковки в шифр ввести. Да, во времена доса у нас тоже любили хранить бухгалтерский счёт/субсчёт в поле N(5,2) - и даже покруче извращения были - но сейчас так делать точно не стоит... ------------------ WBR, Igor |
Re: Что может быть причиной ошибки? | |
---|---|
Александр Жевелев Автор Сообщений: 2723 Откуда: Новосибирск Дата регистрации: 09.10.2003 |
Прошло чуть более 2-х месяцев - нет ни одной ошибки!
единственное мое действо -"установил у таблиц используемых только для чтения MergeOption.NoTracking " |
© 2000-2024 Fox Club  |