ADO.NET Entity Framework: мастер обновления не будет добавлять таблицы
Я добавлено новое ADO.Net модель данных сущности в мой проект и использовал Мастер Обновления для добавления таблиц в модели. В область конструктора были добавлены пять выбранных таблиц. Две другие таблицы добавлять не буду. Я выбираю их в Мастере и нажимаю кнопку Готово, но они никогда не отображаются в области конструктора.
это ошибка, или есть некоторые ситуации, когда таблица не может быть добавлено к модели (по дизайну)?
обновление: формат XML.*( edmx) раскрывает проблему.
<!--Errors Found During Generation:
warning 6013: The table/view 'FooBar.dbo.Roles' does not
have a primary key defined and no valid primary key could be inferred.
This table/view has been excluded. To use the entity you will need to
review your schema, add the correct keys and uncomment it.-->
<!--<EntityType Name="Roles">
<Property Name="role_id" Type="decimal" />
<Property Name="role_desc" Type="nvarchar" MaxLength="30" />
</EntityType>-->
спасибо Крейг за ваш ответ.
10 ответов:
область конструктора отличается от модели объекта. Можно иметь таблицу в отображении в вашем EDMX, которая не отображается в области конструктора. Просмотрите файл в формате XML, чтобы убедиться, что это так. В этом случае мастер обновления не позволит повторно добавить таблицы, так как они уже являются частью модели сущностей. Так что, вообще говоря, мастер обновления знает больше о вашей модели сущности, чем о области конструктора, per se.
I не думайте, что это именно та ситуация, в которой вы находитесь, но она должна дать вам общую идею для решения: перейдите в XML и найдите ссылки на соответствующие таблицы.
установите первичные ключи для всех таблиц или только один непроверенный флажок "Разрешить null" для любого столбца каждой таблицы. Это работает для меня :)
1.Измените структуру таблицы и добавьте основной столбец. Обновите модель.
2.Изменить .EDMX-файл в Редакторе XML и попробуйте добавить новый столбец под тегом для этой конкретной таблицы. (НЕ БУДЕТ РАБОТАТЬ)
3.Вместо того, чтобы создавать новый Основной столбец для выхода из таблицы, я сделаю составной ключ, включив все существующие столбцы.(Работал)
Entity Framework: добавление DataTable без первичного ключа в модель сущности.
У меня тоже была эта проблема, все вышеперечисленное не сработало для меня. Мне помогло следующее.
при попытке подключения к базе данных, что база данных может иметь разных пользователей с разными учетными данными он может принимать. Допустим, пользователь A till D.
Если вы пытаетесь подключиться к пользователю, убедитесь, что у пользователя включены правильные учетные данные, в этом случае включены параметры чтения и записи.
для этого запустите MS SQL Server Managment Studio, подключенный с помощью SQL server и выберите базу данных, с которой вы пытаетесь установить соединение в visual studio. В разделе 'your_dbname' -- > Security --> Users вы найдете список пользователей. Щелкните правой кнопкой мыши имя пользователя, с которым вы пытаетесь войти в систему, и выберите Свойства. Откроется окно. Выберите страницу "общие" (выбран по умолчанию) и на вкладке "членство в роли базы данных"убедитесь, что выбраны' db_datareader 'и' db_datawrite'.
Примечание: при входе в систему слишком MS SQL Server Management Studio убедитесь, что вы входите в систему с пользователем, который может включить/отключить эти параметры...
проверьте наличие "нулей" в вашей конкретной таблице. Если все столбцы имеют значение "разрешить Null" Entity Framework рассматривает его как таблицу "Null". У меня была та же проблема и снят флажок "Разрешить Null", и он добавил необходимую таблицу.
мое решение состоит в том, чтобы удалить всю модель и прочитать ее, включая новые таблицы, которые я хочу.
Я случайно удалил таблицу в конструкторе один раз и не смог ее прочитать. Следовательно, удаление всей модели и ее чтение.
У меня были некоторые проблемы с этим, а также (Ado.Net модель данных сущности не обновляется правильно)
Это было решено в последней версии(среда: VS 2012 , .net framework 4.5). Простой открой .edmx файл и добавить необходимые таблицы / хранимые процедуры / представления. Таблица / представление, которое не имеет первичного ключа, будет создано как таблица/представление только для чтения.
таблица / представление 'TABLE_NAME' не имеет определенного первичного ключа. Ключ был выведен, и определение было создано как таблица/представление только для чтения.
вам не нужно удалять всю модель (это может быть сотни таблиц!).
мастер может обрабатывать "добавление новых" элементов, но некоторые изменения, такие как изменение составных ключей и переименование столбцов - он не знает, что делать - поэтому он не пытается - и все выходит из синхронизации.
Так: Удалите соответствующие таблицы из модели (концептуальный режим) и из модели.Сохраните, а затем обновите модель с помощью Мастера и повторно добавьте только таблицы вопрос.
просто выбрасывая некоторые детали для тех, кто не должен был делать это раньше. Я использую visual studio 2013 с установленным обновлением 4. Я добавил некоторые поля в таблицу, удалил таблицу из моей модели, затем пошел на обновление, и это не позволило мне проверить ни одну из таблиц.
У меня есть первичный ключ.
Я создал новую тестовую таблицу, которая появилась, и это позволило бы мне проверить ее, но не мой оригинал.
Я никогда не открывал его в XML раньше и не делал знаю, как это сделать. Вы щелкните правой кнопкой мыши .edmx файл и "открыть с помощью" -- выберите редактор xml.
таблица, о которой идет речь, была там в порядке, у нее даже были новые поля (странно).
Я удалил все ссылки на него (взял пару раз) - после того, как вы удалите один и сохраните, если вы попытаетесь открыть его, и он не будет отображаться, просто перейдите и выберите "Просмотр XML" - посмотрите на ошибки и в основном следуйте за прыгающим мячом, пока вы его не очистите.
надеюсь, что дополнительные детали помогают кому-то.
Джо
один простой способ, который я нашел, состоял в том, чтобы (в среде SQL Server Management Studio) добавить столбец ID типа INT, снять флажок "Разрешить значения NULL" и в разделе свойства столбца (ID) >> спецификация идентификатора >> проверить (is Identity) и убедиться, что задано приращение.
Как только это будет сделано, вернитесь к своему .окно edmx, щелкните правой кнопкой мыши и обновите модель из базы данных.