System.InvalidCastException: указанное приведение недопустимо при вставке записи в LINQ to SQL - PullRequest
1 голос
/ 04 октября 2009

На моей машине для разработки все работает нормально, но как только я публикую это на сервере, я получаю

System.InvalidCastException: указанное приведение недействительно

Это происходит на

db.SubmitChanges();

Я проверил https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=351358, и это все еще вызывает у меня ошибки

Я также запустил Центр обновления Windows, и на сервере все обновлено

Ответы [ 5 ]

2 голосов
/ 04 октября 2009

Вы не говорите, что пытаетесь отправить в базу данных, поэтому все, что я предлагаю, будет (образованным) догадкой. Однако, что приходит на ум, это проверить формат даты на вашем компьютере и на сервере. Это может быть на уровне ОС или уровня базы данных.

Если ваш компьютер - Великобритания, а сервер - США, то, если у вас есть строка, представляющая дату в формате Великобритании (например, 30/9/2009), произойдет сбой, так как нет 30 месяцев.

Однако, поскольку вы говорите, что это не особая проблема, обратите внимание на различия между вашей средой разработки и сервером, чтобы выделить возможные проблемы.

Неполный список проверяемых вещей:

  • разные операционные системы. Я предполагаю, что вы работаете на XP / Vista, а сервер на Windows Server. Получить машину с той же ОС и отладить ее там. Ваша машина разработки 32-битная, а сервер 64-битный (или наоборот)?
  • разные версии среды выполнения .NET. Убедитесь, что на сервере установлена ​​та же версия, что и на вашей машине для разработки.
  • другие библиотеки и т. Д. Установлено ли на компьютере разработчика что-то, что вы не установили на сервере?
1 голос
/ 09 октября 2009

Хорошо, я решил проблему.

Проблема, по-видимому, заключается в том, что у меня есть таблицы с Id в виде Int и первичными ключами, а также GUID в качестве полей, которые определены как уникальные, а поле Guid является ключом к другой таблице и используется внешний ключ.

Когда я устанавливаю поле Guid в качестве первичного ключа в таблице, проблема исчезает.

Я не создал тестовый проект, чтобы доказать это, из-за нехватки времени, так как мы собираемся жить на следующей неделе

0 голосов
/ 06 июня 2012

У меня тоже была эта проблема. Я перешел в локальную базу данных и забыл внести эти изменения в производственную базу данных.

0 голосов
/ 19 декабря 2010

Я сталкиваюсь с тем же исключением при звонке:

DataContext.SubmitChanges();

после изменения объекта в контексте. и то же самое работало в машине разработки и на сервере, я получил ту же ошибку приведения.

У меня была связь между двумя таблицами с использованием строкового свойства в качестве ключа.

Чтобы исправить, я удалил ассоциацию.

0 голосов
/ 06 октября 2009

Вы изменили тип данных любого столбца в модели или в базе данных? Это исключение обычно возникает в результате несоответствия между типом данных, используемым в модели L2S, и типом данных, используемым в базе данных.

Кроме того, у вас есть поля varchar (1) или nvarchar (1)? Если это так, конструктор L2S по умолчанию отобразит их в System.Char. Это неверное отображение, поскольку varchar (1) или nvarchar (1) могут содержать пустую строку, в то время как System.Char должен содержать ровно один символ и может приводить к выбрасыванию InvalidCastExceptions (хотя это несоответствие обычно происходит при получении данных, при отправке) ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...