一.概要 本文主要是學習CodeFirst思想。技術上的實現是C#(.net framework4.6.1) 控制台 + PostgreSQL 10.2.1 代碼:https://pan.baidu.com/s/1ggzHRub 二.實現過程 1.新建控制台 2.添加nuget包:EntityFra ...
一.概要
本文主要是學習CodeFirst思想。技術上的實現是C#(.net framework4.6.1) 控制台 + PostgreSQL 10.2.1
代碼:https://pan.baidu.com/s/1ggzHRub
二.實現過程
1.新建控制台
2.添加nuget包:EntityFramework6.Npgsql,還有很多次要包,依據代碼需要增加
3.app.config配置,依據每個人的不同情況自行更改
<system.data>
<DbProviderFactories>
<add name="Npgsql Data Provider" invariant="Npgsql" description="Data Provider for PostgreSQL" type="Npgsql.NpgsqlFactory, Npgsql" />
</DbProviderFactories>
</system.data>
<connectionStrings>
<add name="Postgresql" connectionString="Server=localhost;Port=5432;User Id=postgres;Password=123456;Database=TestDB;Pooling=true;" providerName="Npgsql" />
</connectionStrings>
4.新建一個類(不是重點)
5.新建這個類的context繼承自DbContext(關鍵)
public class DonatorContext : DbContext
{
public DonatorContext() : base("Postgresql") { }//從配置connectionString獲取名稱為Postgresql的資料庫連接信息
public DbSet<Donator> donators { get; set; }//表名,可修改
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.HasDefaultSchema("public");//設置模式
modelBuilder.Entity<Donator>().ToTable("donators");//修改表名
modelBuilder.Entity<Donator>().HasKey(t => t.donator_id);//設置key
modelBuilder.Entity<Donator>().Property(t => t.donator_id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);//donator_id自增長
}
}
6.在program中實現類生成資料庫表(CodeFirst)
donatorContext.Database.CreateIfNotExists();//如果資料庫不存在時則創建
donatorContext.donators.Create();
var d = new Donator()
{
donator_id = 88,
amount = 2,
name = "128",
donate_date = DateTime.Now
};
donatorContext.donators.Add(d);
donatorContext.SaveChanges();
三.總結
上面是主要過程,可以實現CodeFirst思想。但還有個問題,每次新增數據,必須不存在資料庫從0開始;如果存在資料庫,插入數據一直報錯。id不為空,非常奇怪。