2014-05-07 63 views
2

我在Visual Studio 2013中创建了一个新的MVC项目,并向IdentityModels.cs和AccountViewModels.cs添加了一个“CompanyName”字段。然后,我安装了最新的测试版Npgsql的用的NuGet(Npgsql 2.1.3Npgsql.EntityFramework 2.1.3)接下来,我打开web.config文件,并设置下面的连接字符串:Npgsql/Entity Framework不会在新MVC项目中更改/创建列

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

最后,我创建了一个新的数据库,并改名为“公共”模式在db到pgadmin的“dbo”中。我创建了一个新的用户角色,并使其成为“dbo”模式的所有者。我使用this SQL脚本在架构上创建了相关表。

但是,当我尝试注册时,我得到了以下错误:

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

那是什么Extent1表?我认为框架会自动改变表格以添加新列。是否有更多的设置需要完成?

更新

我手动添加的公司名称列在AspNetUsers表,现在它给出了这样的错误消息: 错误:42703:列Extent1.Discriminator不存在

不是鉴别列在更高版本的EF中删除?我有EF 6.

解决方案

对于其他人有类似的问题,这里是我做的。对于AspNetUsers表,您不仅需要添加自定义字段,而且每个表还必须有一个名为“Discriminator”(区分大小写)的类型为“字符变化”并且长度为256的列。此外,请检查您的单个表是否具有访问你的数据库用户(在我的情况下,数据库用户是数据库和架构的所有者,但不是架构内的表!)

回答

0

为什么你不使用SQL生成器这样的Postgres :

PM> Install-Package EntityFramework.v5.PostgreSql 

并将EF配置为使用手动迁移?

相关问题