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 82

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, щелкните правой кнопкой мыши и обновите модель из базы данных.