如何从PostgreSQL架构构建实体框架模型?

时间:2016-02-07 01:43:35

标签: database entity-framework postgresql npgsql

(这个问题遵循an excellent post on using Npgsql)。

我有一个PostgreSQL(9.5.0)数据库,有两个模式:public和nova。然后我使用了NuGet控制台:

Install-Package EntityFramework6.Npgsql -Version 3.0.5

现在我将以下元素添加到app.config文件中:

<system.data>
    <DbProviderFactories>
        <remove invariant="Npgsql"/>
        <add name="Npgsql Data Provider"
             invariant="Npgsql"
             description=".Net Data Provider for PostgreSQL"
             type="Npgsql.NpgsqlFactory, Npgsql, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"
             support="FF" />
    </DbProviderFactories>
</system.data>

然后我在我的项目中添加了一个新的“ADO.NET实体数据模型”。

填写了以下连接属性:

Database:       chaos
Host:           localhost
Password:       psw
Port:           5432
Search Path:    nova
Username:       postgres

然后测试连接,一切正常。

然后首先使用数据库构建实体框架。 .edmx文件构建正确,VS设计师很高兴。

问题是.edmx文件是从数据库中的所有表构建的。也就是说,public和nova架构的表都在.edmx文件中。

除了在连接属性中指定搜索路径之外,我在数据库上尝试了以下内容 - 但这些不会更改添加到.edmx文件的两个模式:

  • ALTER DATABASE chaos SET search_path TO nova;
  • ALTER USER postgres SET search_path to nova;
  • ALTER SCHEMA public RENAME TO public_old;

有没有办法只使用一个架构Nova构建实体框架?

我的组件:

  • Windows 10 Professional
  • Entity Framework 6.0.0
  • Npgsql 3.0.5
  • PostgreSQL 9.5.0
  • Visual Studio 2015

TIA

1 个答案:

答案 0 :(得分:0)

您可以使用程序包管理器控制台运行Database First脚手架 使用import requests from requests_toolbelt.multipart.encoder import MultipartEncoder multipart_data = MultipartEncoder( fields={ "uploadId": "0:2d7765623034:557915d737b48:000456", "mtype": "1000", "extensions": "png,gif", "minPixSize": "1000", "maxBytesSize": "1000", "masterSize": "", "masterWidth": "", "masterHeight": "", "imageFile1": ( "filename.jpg", open("filename.jpg"], 'rb'), "image/jpeg" ) } ) requests.post( url="http://myserver.com/upload", headers={ "Content-Type": multipart_data.content_type, }, data=multipart_data, ) 参数仅针对特定模式运行它:

-Schemas

Scaffold-DbContext "host=server;database=chaos;user id=postgres;" Devart.Data.PostgreSql.Entity.EFCore -Schemas nova命令还接受表的参数:Scaffold-DbContext

here回答。

另见this教程。