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 can be installed in two ways: native system and Docker.
Official
Docker
In the application project Add relevant citations. dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL
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}"; } }
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"); } }
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(); } }
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:
If the program runs normally, the generated data table should be visible in the database:
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.
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!