.NET Core中如何使用Entity Framework操作PostgreSQL?

本篇文章给大家带来的内容是介绍.net core中使用entity framework操作postgresql的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所助。

Entity Framework在.NET Core中被命名为Entity Framework Core。虽然一般会用于对SQL Server数据库进行数据操作,但其实它还支持其它数据库,这里就以PostgreSQL作为例子。

PostgreSQL

PostgreSQL可以选用原生系统与Docker两种安装方式。

Official

Docker

Package

在应用程序工程中添加相关的引用。
dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL

Entity

编写两个实体类,用于映射User表与Order表。

public class User{    [Key]    public int Id { get; set; }    [Required]    public string Name { get; set; }    public virtual ICollection Orders { get; set; }    public override string ToString()    {        var orders = new StringBuilder();        foreach (var o in Orders)        {            orders.Append(o.ToString());        }        return $"UserId: {Id} Name: {Name} Orders: {orders.ToString()}";    }}
public class Order{    [Key]    public int Id { get; set; }    [Required]    public int UserId { get; set; }    [Required]    public string Item { get; set; }    [Required]    public string Description { get; set; }    public virtual User User { get; set; }    public override string ToString()    {        return $"OrderId: {Id} Item: {Item} Descriptoin: {Description}";    }}

DbContext

构建必要的DbContext类,并传入连接PostgreSQL所需的参数。

public class PurchaseDbContext : DbContext{    public DbSet Users { get; set; }    public DbSet Orders { get; set; }    protected override void OnConfiguring(DbContextOptionsBuilder builder)    {        builder.UseNpgsql("Host=localhost;Username=postgres;Password=random;Database=Purchase");    }}

Seeder

构建一个用于初始化数据库的辅助类。

public class PurchaseDbContxtSeeder{    public static void Seed(PurchaseDbContext context)    {        context.Database.EnsureDeleted();        context.Database.EnsureCreated();        var users = new List            {                new User { Name = "Tom" },                new User { Name = "Mary" }            };        var orders = new List            {                new Order { User = users[0], Item = "cloth", Description = "handsome"},                new Order {User = users[1], Item = "hat", Description = "red"},                new Order {User = users[1], Item = "boot", Description = "black"}            };        context.Users.AddRange(users);        context.Orders.AddRange(orders);        context.SaveChanges();    }}

Test

测试的程序第一步是调用生成数据的辅助类,第二步是查询数据表中的数据并在控制台中显示出来。

static void Main(string[] args){    using (var context = new PurchaseDbContext())    {        PurchaseDbContxtSeeder.Seed(context);        var users = context.Users.Include(u => u.Orders).ToList();        users.ForEach(u =>        {            System.Console.WriteLine(u);        });    }}

以下是显示的结果:
.NET Core中如何使用Entity Framework操作PostgreSQL?

程序正常运行的话,数据库中应该可以看到所生成的数据表:
.NET Core中如何使用Entity Framework操作PostgreSQL?

.NET Core中如何使用Entity Framework操作PostgreSQL?

.NET Core中如何使用Entity Framework操作PostgreSQL?

再查看数据表的生成脚本,可以看到字段以及表之间的关系皆通过Entity Framework自动生成。
.NET Core中如何使用Entity Framework操作PostgreSQL?

.NET Core中如何使用Entity Framework操作PostgreSQL?

以上就是.NET Core中如何使用Entity Framework操作PostgreSQL?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1432896.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 08:44:07
下一篇 2025年12月17日 08:44:19

相关推荐

发表回复

登录后才能评论
关注微信