如何在.NET Core中使用Entity Framework对PostgreSQL进行操作

发布时间:2020-07-10 11:00:44 作者:Leah
来源:亿速云 阅读:1536

今天就跟大家聊聊有关如何在.NET Core中使用Entity Framework对PostgreSQL进行操作,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

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

PostgreSQL

PostgreSQL可以选用原生系统与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<Order> 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<User> Users { get; set; }
    public DbSet<Order> 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<User>
            {
                new User { Name = "Tom" },
                new User { Name = "Mary" }
            };

        var orders = new List<Order>
            {
                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进行操作有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

推荐阅读:
  1. .NET Core 2.0 Preview2的案例分析
  2. .NET Core 3.0的特性有哪些

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

entity framework postgresql

上一篇:springboot+mybatis通过实体类如何自动生成数据库表

下一篇:Android动画Animator开发问题

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》