Le contenu de cet article est de présenter comment utiliser Entity Framework pour faire fonctionner PostgreSQL dans .NET Core. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.
Entity Framework est nommé Entity Framework Core dans .NET Core. Bien qu'il soit généralement utilisé pour effectuer des opérations de données sur les bases de données SQL Server, il prend en fait en charge d'autres bases de données. Nous prenons ici PostgreSQL comme exemple.
PostgreSQL peut être installé de deux manières : système natif et Docker.
Officiel
Docker
dans l'ingénierie des applications Ajouter pertinent citations. dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL
Écrivez deux classes d'entités pour mapper la table User et la table 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}"; } }
Créez la classe DbContext nécessaire et transmettez les paramètres requis pour vous connecter à 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"); } }
Construit une classe d'assistance pour initialiser la base de données.
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(); } }
La première étape du programme de test consiste à appeler la classe auxiliaire qui génère les données. La deuxième étape consiste à interroger les données dans la table de données et à les afficher dans le. 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); }); } }
Voici les résultats affichés :
Si le programme s'exécute normalement, le tableau de données généré doit être visible dans la base de données :
En regardant le script de génération de la table de données, vous pouvez voir que les relations entre les champs et les tables sont automatiquement générées via Entity Cadre.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!