1 安装配置
下载Npgsql PostgreSQL Interaction插件并安装,在此选择安装4.0.9版本,推荐使用github(地址:https://github.com/npgsql/npgsql/releases)手动选择版本下载。
一定需要使用这个版本否则会有问题,假如之前已经安装了,则先卸载
2 安装Npgsql,安装4.09版本
3 安装EntityFramework6.Npgsql 3.2.1.1
4 连接postgresql进行测试
Tools>Connect to Database
测试成功后生成model
model connect code
public partial class Model1 : DbContext
{
public Model1()
: base("name=Model1")
{
}
public virtual DbSet<slam> slams { get; set; }
public virtual DbSet<slamschild> slamschilds { get; set; }
public virtual DbSet<test> tests { get; set; }
public virtual DbSet<result> results { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<slam>()
.HasMany(e => e.results)
.WithOptional(e => e.slam1)
.HasForeignKey(e => e.slam);
}
}
results code demo
[Table("public.results")]
public partial class result
{
[StringLength(8000)]
public string slam { get; set; }
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int year { get; set; }
[Column("result")]
[StringLength(8000)]
public string result1 { get; set; }
public virtual slam slam1 { get; set; }
}
当然我们也可以自己手写model类例如
[Table("public.results")]
public class Class1
{
[Column("slam")]
public string slam { get; set; }
[Column("year")]
[Key]
public float year { get; set; }
//[Column("year")]
//[DatabaseGenerated(DatabaseGeneratedOption.None)]
//[Key]
//public int year { get; set; }
[Column("result")]
public string result { get; set; }
}
注意主键需要加上[DatabaseGenerated(DatabaseGeneratedOption.None)]特性,这个特性是指需要手动指定主键的值,而不是自增
简单的查询
using (var dd = new Model1())
{
var test = dd.results.Where<result>((x)=>x.year!= null).ToList();
}
注意
config文件需要添加以下两项
<connectionStrings>
<add name="Model1" connectionString="Host=127.0.0.1;Database=postgres;Username=postgres;Password=postgres;Persist Security Info=True" providerName="Npgsql" />
</connectionStrings>
<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>