Npgsql / Entity Framework не променя/създава колони в нов MVC проект

Създадох нов MVC проект във Visual Studio 2013 и добавих поле „CompanyName“ към IdentityModels.cs и AccountViewModels.cs. След това инсталирах най-новата бета версия на Npgsql с Nuget (Npgsql 2.1.3 и Npgsql.EntityFramework 2.1.3). След това отворих web.config и зададох следния низ за връзка:

<connectionStrings>
<add name="DefaultConnection" connectionString="Server=127.0.0.1;Port=5432;Database=DBNAME;User Id=MYUSER;Password=MYPASS;" providerName="Npgsql" />
</connectionStrings>

И накрая, създадох нова база данни и преименувах "публичната" схема в db на "dbo" с pgadmin. Създадох нова потребителска роля и я направих собственик на схемата "dbo". Създадох съответните таблици в схемата с този SQL скрипт.

Въпреки това, когато се опитам да се регистрирам, получавам следната грешка:

Exception Details: Npgsql.NpgsqlException: ERROR: 42703: column Extent1.CompanyName does not exist

Каква е тази таблица Extent1? Мислех, че рамката автоматично ще промени таблиците, за да добави нови колони. Има ли още настройка, която трябва да се направи?

Актуализация

Добавих колоната CompanyName ръчно към таблицата AspNetUsers и сега тя дава следното съобщение за грешка: ГРЕШКА: 42703: колона Extent1.Discriminator не съществува

Колоната Discriminator не беше ли премахната в по-късните версии на EF? Имам EF 6.

Решение

За всеки друг, който има подобен проблем, ето какво направих. Към таблицата AspNetUsers трябва да добавите не само персонализираните си полета, но всяка таблица трябва също да има колона с име „Дискриминатор“ (чувствителна към малки и главни букви) от тип „променлив знак“ и дължина 256. Освен това проверете дали отделните ви таблици имат достъп до вашия db потребител (в моя случай db потребителят беше собственик както на базата данни, така и на схемата, но не и на таблиците в схемата!)


person arao6    schedule 07.05.2014    source източник


Отговори (1)


защо не използвате sql генератор за Postgres като този:

PM> Install-Package EntityFramework.v5.PostgreSql

и да конфигурирате EF да използва ръчна миграция?

person Darion Badlydone    schedule 31.07.2014