VS 2012 - EF 5.0 - Обновление модели из базы данных - Не регистрировать изменения таблицы

В Visual Studio 2010 EF 4 я мог бы добавить новый столбец в таблицу базы данных, а затем нажать «Обновить модель из базы данных ' на моем .edmx и все было хорошо на свете.

В Visual Studio 2012 EF 5 я изменяю таблицу и затем нажимаюОбновить модель из базы данных ' и он больше не забирает изменения в отдельных таблицах.

Я что-то упустил ... или это новый?особенность' VS2012?

Обновить Единственный способ получить таблицу с добавленным столбцом для отображения в файле .EDMX - это удалить таблицу, затемОбновить модель из базы данных ' и он подберет добавленный столбец. Тем не менее, добавленная таблица отодвигается далеко влево, и я должен переместить ее обратно на место. нетBiggie просто раздражение

 Erik Funkenbusch24 окт. 2012 г., 19:39
Как я уже сказал, это неЯ всегда так делаю. И вам часто приходилось либо обновлять объект вручную, либо удалять и повторно добавлять.
 Erik Funkenbusch24 окт. 2012 г., 19:28
Это всегда было странно, даже в период с 2010 по 2008 годы. Некоторые изменения никогда не распространялись на модель. Возможно, это один из тех случаев?
 c0d3p03t24 окт. 2012 г., 19:38
Я слышал, но по крайней мере это работало в 2010 году, чтобы обновить таблицу, и edmx поднял бы ее. Это возвращает меня к дням LINQ, где вы должны удалить элемент, а затем добавить его обратно ... тьфу

Ответы на вопрос(4)

это произошло потому, что вы удалили одну из своих сущностей и теперь хотите обновить ее из базы данных. модель кэширует эти объекты, поэтому у вас нет выбора обновить таблицу. поэтому вы должны щелкнуть правой кнопкой мыши на странице модели и выберите опцию браузера модели. Вы найдете браузер модели с правой стороны. Удалите сущность, которую вы хотите обновить, из папки типа сущности. Теперь делайте что хотите.

Решение Вопроса

Существует разница между наличием модели EF и ее подчеркиванием в вашей базе данных. Когда ты "Обновить модель из базы данных "Если сущность / таблица уже импортирована в вашу модель данных, вы будете обновлять сущность. Этот процесс не будет автоматически сопоставлять вашу схему базы данных с существующей моделью данных, однако вы можете добавить свойство к сущности в вашей модели EF, а затем сопоставить свойство со столбцом базы данных (это именно то, что EF делает для вас автоматически, когда вы удаляй и обновляй нормально).

Когда вы сначала удаляете сущность, а затем обновляете EF, она знает, что таблица / сущность ранее не импортировалась, и поэтому автоматически сопоставит все столбцы базы данных.

Таким образом, вы неДолжны удалить сущность, но это может быть проще сделать для простых сущностей.

 c0d3p03t25 окт. 2012 г., 18:39
Не тот ответ, на который я надеялся, но он помогает, спасибо!
 Ryan Amies25 окт. 2012 г., 22:26
Я знаю это'раздражение, если не сказать больше. Я думаю этопотому что вы могли внести дополнительные изменения в сущность между тем, когда вы добавили его, и когда вы обновили его, но не должныэто просто сравнение хеш-проверки? Я'Я уверен, что у команды ADO.NET есть свои причины.

У меня была похожая / та же проблема, и я удалил таблицу из модели, затем выбрал "Обновить модель из базы данных. " Это снова нене могу работать, а я не могуДоступ к новому столбцу, который я добавил в таблицу.

Однако, как только я вручную проверил модельВ файле конструктора из системы управления версиями (Vault Professional), а затем удалили таблицу из модели и снова обновили модель из базы данных, все заработало. Так что, может быть, VS нене знаю, чтобы проверить модель "S дизайнерский файл в данном конкретном случае.

Да, это все еще работает в VS2012. Вы используете генерацию кода по умолчанию или у вас есть файл TT? Может быть, это такдобавляются в EDMX, но ваши файлы классов не обновляются.

Попробуйте щелкнуть правой кнопкой мыши файл EDMX или соответствующий файл TT в обозревателе решений и выберите «Run Custom Tool " чтобы убедитьсявозрождается.

 ADOConnection15 апр. 2013 г., 18:27
+1 за "Run Custom Tool "
 Toby J24 окт. 2012 г., 20:54
Стол с новыми колоннами выигралне показывать под "Добавлять" вкладка; Oни'буду наОбновить» Вкладка. Ваша таблица указана в разделе Обновить на этой вкладке? Добавление нового столбца в существующую таблицувсегда работал для меня в 2010 и 2012 годах. Но да, откладывание WAAAY в сторону - это новая функция 2012 года :)
 c0d3p03t24 окт. 2012 г., 19:26
Это действительно перестраивает классы и собирает изменения в файле .edmx. Однако, если я изменю таблицу, она все еще незабрать эти изменения. Посмотреть здесь:Скриншот

Ваш ответ на вопрос