EF превратил столбец bigint в int32 в файле метаданных - PullRequest
0 голосов
/ 04 сентября 2018

Для таблицы SomeTable в моей базе данных EF преобразовал первичный ключ типа bigint в свойство типа int32 в файле метаданных, тогда как его эквивалент сгенерированный моделью частичный класс имеет тип данных long для того же поля. Это создает конфликт, когда я пытаюсь загрузить данные из SomeTable . Следующее исключение выдается во время выполнения ...

System.MissingMethodException was unhandled by user code
  HResult=-2146233069
  Message=Method not found: 'Int32 RMSDataLibrary.SomeTable.get_ID()'.
  Source=GUI_Forms
  StackTrace:
       at GUI_Forms.DataRetrieval.populateData()
       at GUI_Forms.DataRetrieval.DataRetrieval_Load(Object sender, EventArgs e) in E:\RMS\C#\RMS-ESS\GUI_Forms\DataRetrieval.cs:line 25
       at System.Windows.Forms.Form.OnLoad(EventArgs e)
       at System.Windows.Forms.Form.OnCreateControl()
       at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
       at System.Windows.Forms.Control.CreateControl()
       at System.Windows.Forms.Control.SetVisibleCore(Boolean value)
  InnerException: 

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

1 Ответ

0 голосов
/ 06 сентября 2018

Оказалось, что не EF, а наш парень из БД изменил тип данных первичного ключа с int на bigint :), но каким-то образом удалил эту таблицу из моего .edmx, а затем обновление модели не привело к каким-либо изменениям в файле метаданных (ошибка EF ???). Даже удаление всего содержимого .edmx и обновление не оказали никакого влияния.

Достаточно разочарован, я удалил всю созданную папку ADO.NET EF Data Model, а затем заново создал ее с нуля. И это решило проблему.

Я думаю, что либо EF должен обновлять файл метаданных при обновлении файла .edmx, либо он должен позволять программисту изменять его.

...