经过几年的更新及业界对Entity Framework 的认同。 现在 EF 可以支持的数据库越来越多了。而PostgresQL 数据库现在也可以使用code first的方式来创建数据库了。

不多说了,下面直接上过程。

首先要安装必要的库

直接在VS的程序包管理控制台里执行

Install-Package Npgsql.EntityFramework

或者右键点引用到 nuget的管理工具里去搜  Npgsql.EntityFramework

安装时会自动解决依赖,安装EF 6.0  和 Npgsql 驱动

Model

code-first  的model 当然是直接写代码了。

//实体类
public class KeyValueTbl
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long Id { get; set; } [Required]
public string Value { get; set; }
}
// 数据库上下文
public class DB:DbContext
{
public DB() : base("name = Db") { }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//EF 默认的schema 是dbo,但是PG默认是public,这里改一下
modelBuilder.HasDefaultSchema("public");
}
public virtual DbSet<KeyValueTbl> KeyValueTbl { get; set; }
}

配置

正常情况下,在安装EF时,程序配置文档就自动添加了的。不过,这里还是贴上完整个的文档

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v12.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="Npgsql" type="Npgsql.NpgsqlServices, Npgsql.EntityFramework" />
</providers>
</entityFramework>
<system.data>
<DbProviderFactories>
<!-- 注意这里,安装程序包时,这里的配置并不会自动添加 -->
<remove invariant="Npgsql" />
<add name="Npgsql" invariant="Npgsql" description=".Net Framework Data Provider for Postgresql" type="Npgsql.NpgsqlFactory, Npgsql" />
</DbProviderFactories>
</system.data>
<connectionStrings>
<!-- 与数据库上下文对应的连接字符串, 主机,用户,密码 用你自己的 -->
<add name="Db" connectionString="Server=localhost;User Id=postgres; Password = postgres; Database=EfDb" providerName="Npgsql"/>
</connectionStrings>
</configuration>

用代码实现数据库初始化

class Program
{
static void Main(string[] args)
{
//用你需要的方式初始化 另外两个是
//DropCreateDatabaseIfModelChanges
//CreateDatabaseIfNotExists
var Initializes = new DropCreateDatabaseAlways<Model.DB>();
using(Model.DB db = new Model.DB())
{
Initializes.InitializeDatabase(db);
} using (Model.DB db = new Model.DB())
{
db.KeyValueTbl.Add(new Model.KeyValueTbl { Value = "Hello World!" });
db.SaveChanges();
Console.WriteLine(db.KeyValueTbl.First().Value);
} Console.ReadKey(true);
}
}

不出意外,你应该可以看到数据,并且可以用其它工具打开数据库,你会发现表已自动创建并且有一条数据。

当然了,现在的驱动也同时支持Entity Framework 自带的 Migration 工具。使用Migration 可以创建 多列组合的索引,非常好用。因为跟sql server的操作没什么大区别,这里就不赘述了。

Entity Framework - PostgresQL CodeFirst的更多相关文章

  1. 在Oracle中使用Entity Framework 6 CodeFirst

    项目中需要将系统从SQLServer数据库迁移到Oracle上.由于原大部分数据访问操作都是通过包装了Entity Framework的统一访问入口实现的,所以需要研究Entity Framework ...

  2. [转]Using Entity Framework (EF) Code-First Migrations in nopCommerce for Fast Customizations

    本文转自:https://www.pronopcommerce.com/using-entity-framework-ef-code-first-migrations-in-nopcommerce-f ...

  3. [ORM] Entity Framework(1) CodeFirst快速入门

    Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案 对象关系映射(英语:Object Relational Mapping ...

  4. ASP.NET: Setup a MVC5 website with MySQL, Entity Framework 6 Code-First and VS2013

    The new features available in EF6 allow any developer to build a simple DB-powered website with very ...

  5. Entity Framework:Code-First Tutorial开篇

    这个系列文章是关于Entity Framework Code-First的英文系列文章,内容不错,每篇一个主题知识点介绍,特转载过来 原文地址:http://www.entityframeworktu ...

  6. [ORM] Entity Framework(2) CodeFirst进阶

    在上一节中,实现了CodeFirst快速入门.但是很多与数据库的细节还无法自定义.以及使用EF过程中,需要注意的事项. 在本节中,会涉及到以下 EF中的连接字符串 EF的对象状态 延迟加载,为什么需要 ...

  7. Asp.net Core中使用Entity Framework Core CodeFirst

    1.安装对应的包 "Microsoft.EntityFrameworkCore.Design": "1.1.0", "Microsoft.Entity ...

  8. Entity Framework Code-First(2):What is Code-First?

    What is Code-First?: Entity Framework introduced Code-First approach from Entity Framework 4.1. Code ...

  9. UWP开发之ORM实践:如何使用Entity Framework Core做SQLite数据持久层?

    选择SQLite的理由 在做UWP开发的时候我们首选的本地数据库一般都是Sqlite,我以前也不知道为啥?后来仔细研究了一下也是有原因的: 1,微软做的UWP应用大部分也是用Sqlite.或者说是微软 ...

随机推荐

  1. zabbix_agent添加到系统服务启动(八)

    Centos6.5上安装了zabbix_agent后,需要把zabbix_agent添加到系统服务启动,要不然每次要一长串路径再启动,挺麻烦的. 步骤: 1)拷贝zabbix解压包里的zabbix_a ...

  2. Java方法的静态绑定与动态绑定讲解(向上转型的运行机制详解)

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6554103.html 一:绑定 把一个方法与其所在的类/对象 关联起来叫做方法的绑定.绑定分为静态绑定(前期绑 ...

  3. 微信支付,退款时,出现了内部错误-网站中X509Certificate2加载证书时出错

    今天给阿里云,虚拟主机 网站配置了加密证书文件,用类X509Certificate2加载证书文件时,一直报出现了内部错误,但是Demo中用控制台程序加载证书没任何问题 读取证书文件的语句: X509C ...

  4. springboot @RequestBody使用JsonSerialize与 JsonDeserialize自定义转参数,处理Date日期格式

    JsonDeserialize: 1.请求接收的是一个json,并且由对象接收 @RequestMapping(value = "/query", method = {Reques ...

  5. 怎样使用PL/SQL在不安装oracle 客户端的情况下使用oracle数据库

    在网上查了好多这方面的例子,但是似乎说的都不准确,在咨询朋友后终于实现了本机不安装oracle 的情况下,在windows系统上实现连接服务器上的数据库,现在贴出来与大家共享. 首先,我们需要一个PL ...

  6. centos 使用RPM包安装指定版本的docker-engine

    下面是拿安装docker-engine-1.10.3-1为例: wget https://yum.dockerproject.org/repo/main/centos/7/Packages/docke ...

  7. 轻量应用服务器安装 phpMyAdmin

    第一步:在phpMyAdmin官方网站http://www.phpmyadmin.net/downloads/下载源码包并解压 cd /usr/local/src wget https://files ...

  8. 理解OpenShift(3):网络之 SDN

    理解OpenShift(1):网络之 Router 和 Route 理解OpenShift(2):网络之 DNS(域名服务) 理解OpenShift(3):网络之 SDN 理解OpenShift(4) ...

  9. 在WINDOWS下安装MYSQL8.0

    1:创建文件夹D:\data\service\mysql-8.0.11-winx64\data 2:进到D:\data\service\mysql-8.0.11-winx64\bin 第三步:初始化. ...

  10. C常量与控制语句

    在C语言中定义常量的两种方式 在C语言编程中定义常量有两种方法. const关键字 #define预处理器 1. const关键字 const关键字用于定义C语言编程中的常量. const float ...