Home  >  Article  >  Backend Development  >  How to use Entity Framework to operate PostgreSQL in .NET Core?

How to use Entity Framework to operate PostgreSQL in .NET Core?

青灯夜游
青灯夜游forward
2018-10-20 17:49:566326browse

The content of this article is to introduce the method of using Entity Framework to operate PostgreSQL in .NET Core. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.

Entity Framework is named Entity Framework Core in .NET Core. Although it is generally used to perform data operations on SQL Server databases, it actually supports other databases. Here we take PostgreSQL as an example.

PostgreSQL

PostgreSQL can be installed in two ways: native system and Docker.

  • Official

  • Docker

Package

In the application project Add relevant citations.
dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL

Entity

Write two entity classes for mapping the User table and Order table.

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

Build the necessary DbContext class and pass in the parameters required to connect to 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

Construct an auxiliary class for initializing the database.

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

The first step of the test program is to call the auxiliary class that generates data. The second step is to query the data in the data table and display it in the console.

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);
        });
    }
}

The following is the displayed result:
How to use Entity Framework to operate PostgreSQL in .NET Core?

If the program runs normally, the generated data table should be visible in the database:
How to use Entity Framework to operate PostgreSQL in .NET Core?

How to use Entity Framework to operate PostgreSQL in .NET Core?

How to use Entity Framework to operate PostgreSQL in .NET Core?

Looking at the generation script of the data table, you can see that the relationships between fields and tables are automatically generated through Entity Framework.
How to use Entity Framework to operate PostgreSQL in .NET Core?

How to use Entity Framework to operate PostgreSQL in .NET Core?

The above is the detailed content of How to use Entity Framework to operate PostgreSQL in .NET Core?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:cnblogs.com. If there is any infringement, please contact admin@php.cn delete