Entity Framework - PostgresQL CodeFirst

來源:互聯網
上載者:User

標籤:des   style   blog   color   io   os   使用   ar   for   

經過幾年的更新及業界對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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.