今天就跟大家聊聊有關(guān)如何在.NET Core中使用Entity Framework對(duì)PostgreSQL進(jìn)行操作,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
我們提供的服務(wù)有:成都網(wǎng)站制作、成都做網(wǎng)站、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、龍港ssl等。為上千企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢(xún)和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的龍港網(wǎng)站制作公司
Entity Framework在.NET Core中被命名為Entity Framework Core。雖然一般會(huì)用于對(duì)SQL Server數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)操作,但其實(shí)它還支持其它數(shù)據(jù)庫(kù),這里就以PostgreSQL作為例子。
PostgreSQL可以選用原生系統(tǒng)與Docker兩種安裝方式。
Official
Docker
在應(yīng)用程序工程中添加相關(guān)的引用。dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL
編寫(xiě)兩個(gè)實(shí)體類(lèi),用于映射User表與Order表。
public class User { [Key] public int Id { get; set; } [Required] public string Name { get; set; } public virtual ICollectionOrders { 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}"; } }
構(gòu)建必要的DbContext類(lèi),并傳入連接PostgreSQL所需的參數(shù)。
public class PurchaseDbContext : DbContext { public DbSetUsers { get; set; } public DbSet Orders { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder builder) { builder.UseNpgsql("Host=localhost;Username=postgres;Password=random;Database=Purchase"); } }
構(gòu)建一個(gè)用于初始化數(shù)據(jù)庫(kù)的輔助類(lèi)。
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(); } }
測(cè)試的程序第一步是調(diào)用生成數(shù)據(jù)的輔助類(lèi),第二步是查詢(xún)數(shù)據(jù)表中的數(shù)據(jù)并在控制臺(tái)中顯示出來(lái)。
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); }); } }
以下是顯示的結(jié)果:
程序正常運(yùn)行的話(huà),數(shù)據(jù)庫(kù)中應(yīng)該可以看到所生成的數(shù)據(jù)表:
再查看數(shù)據(jù)表的生成腳本,可以看到字段以及表之間的關(guān)系皆通過(guò)Entity Framework自動(dòng)生成。
看完上述內(nèi)容,你們對(duì)如何在.NET Core中使用Entity Framework對(duì)PostgreSQL進(jìn)行操作有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。