Я добавил в свой проект новую модель сущностных данных 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>-->
.net
visual-studio-2008
entity-framework
ado.net
primary-key
Роберт Клейпул
источник
источник
Ответы:
Область разработки отличается от модели объекта. В вашем EDMX может быть таблица в сопоставлении, которая не отображается на поверхности конструктора. Просмотрите файл как XML, чтобы убедиться, что это так. В этом случае мастер обновления не позволит вам повторно добавить таблицы, поскольку они уже являются частью модели сущности. Итак, вообще говоря, Мастер обновления знает о вашей модели сущности больше, чем о поверхности дизайна как таковой .
Я не думаю, что это именно та ситуация, в которой вы находитесь, но это должно дать вам общее представление о решении: зайдите в XML и найдите ссылки на рассматриваемые таблицы.
источник
Установите первичные ключи для всех таблиц или только один снятый флажок «Разрешить ноль» для любого столбца каждой таблицы. Меня устраивает :)
источник
1. Измените структуру таблицы и добавьте основной столбец. Обновите модель.
2. Измените файл .EDMX в редакторе XML и попробуйте добавить новый столбец в тег для этой конкретной таблицы. (НЕ БУДЕТ РАБОТАТЬ)
3. Вместо создания нового основного столбца для выхода из таблицы я создам составной ключ, включив все существующие столбцы (РАБОТАЕТ)
Entity Framework: добавление DataTable без первичного ключа в модель сущности.
источник
У меня тоже была эта проблема, все вышеперечисленное у меня не сработало. Мне помогло следующее.
Когда вы пытаетесь подключиться к базе данных, эта база данных может иметь разных пользователей с разными учетными данными, которые она может принять. Допустим, пользователь от A до D.
Если вы пытаетесь подключиться к пользователю, убедитесь, что у него включены правильные учетные данные, в этом случае включены параметры чтения и записи.
Для этого запустите MS SQL Server Managment Studio, подключенную к вашему SQL-серверу, и выберите базу данных, с которой вы пытаетесь установить соединение в Visual Studio. В разделе your_dbname -> Security -> Users вы найдете список пользователей. Щелкните правой кнопкой мыши имя пользователя, под которым вы пытаетесь войти, и выберите свойства. Откроется окно. Выберите страницу «Общие» (выбрана по умолчанию) и на вкладке «Членство в роли базы данных» убедитесь, что выбраны «db_datareader» и «db_datawrite».
Примечание. Когда вы также входите в MS SQL Server Managment Studio, убедитесь, что вы входите в систему с пользователем, который может включать / отключать эти параметры ...
источник
Проверьте наличие «Nulls» в вашей конкретной таблице. Если для всех столбцов установлено значение «Разрешить нулевое значение», Entity Framework рассматривает его как «пустую» таблицу. У меня была та же проблема, и я снял флажок «Разрешить нулевое значение», и он добавил требуемую таблицу.
источник
Таблицы без первичных ключей добавляться не будут.
источник
Мое решение - удалить всю модель и прочитать ее, включая новые таблицы, которые мне нужны.
Я однажды случайно удалил таблицу в дизайнере и не смог ее прочитать. Следовательно, удаление всей модели и ее чтение.
У меня тоже были некоторые проблемы с этим ( модель данных сущности Ado.Net не обновляется правильно )
источник
Это было решено в последней версии (среда: VS 2012, .NET framework 4.5). Просто откройте файл .edmx и добавьте необходимые таблицы / хранимые процедуры / представления. Таблица / представление, не имеющее первичного ключа, будет создано как таблица / представление только для чтения.
источник
Вам не нужно удалять всю модель (это могут быть сотни таблиц!).
Мастер может обрабатывать «добавление новых» элементов, но некоторые изменения, такие как изменение составных ключей и переименование столбцов - он не знает, что делать, поэтому не пытается - и все выходит из синхронизации.
ТАК: УДАЛИТЕ соответствующие таблицы из модели (концептуальный режим) И из Model.Store, а затем обновите модель с помощью мастера и повторно добавьте только нужные таблицы.
источник
Просто добавлю еще несколько деталей для тех, кому не приходилось делать это раньше. Я использую Visual Studio 2013 с установленным обновлением 4. Я добавил несколько полей в таблицу, удалил таблицу из моей модели, затем пошел на обновление, и это не позволило мне проверить ни одну из таблиц.
У меня есть первичный ключ.
Я создал новую тестовую таблицу, которая появилась, и она позволила мне проверить ее, но не оригинал.
Я никогда раньше не открывал его в XML и не знал, как это сделать. Вы щелкаете правой кнопкой мыши файл .edmx и "открываете с помощью" - выбираете редактор xml.
рассматриваемая таблица была там в порядке, в ней даже были новые поля (странно).
Я удалил все ссылки на него (потребовалось пару раз) - после того, как вы удалите одну и сохраните, если вы попытаетесь открыть ее, и она не будет отображаться, просто выберите «просмотреть XML» - посмотрите на ошибки и в основном следите за прыгающим мячом, пока не очистите его.
надеюсь, что дополнительная деталь поможет кому-то.
Джо
источник
Я нашел один простой способ: (в SQL Server Management Studio) добавить столбец идентификатора типа INT, снять флажок «Разрешить пустые значения» и в разделе Свойства столбца (идентификатора) >> Спецификация удостоверения >> проверить (Идентичность) и сделать обязательно установлен инкремент.
Как только это будет сделано, вернитесь в окно .edmx, щелкните правой кнопкой мыши и обновите модель из базы данных.
источник
Вы можете добавить перекрестную таблицу столбца первичного ключа. Тогда проблема решается
источник
Еще одно решение - убедиться, что учетная запись, через которую вы обращаетесь к базе данных, имеет некоторые разрешения для таблицы, выберите по крайней мере. Таблица не будет добавлена, если у учетной записи нет разрешений на нее.
В SSMS в разделе «Безопасность» щелкните правой кнопкой мыши пользователя или роль и выберите «Свойства». Затем нажмите Securables. В верхней таблице показаны таблицы, доступные в настоящее время. Если недостающих таблиц нет, нажмите на поиск и найдите, затем выделите их в верхней таблице, затем назначьте разрешения в нижней таблице.
источник