前段時間.Net Core 3.0 釋出了,Entity Framework Core 3.0 也釋出了Preview版。假期用了一上午大致研究了一遍,同時又體驗了一把Visual Studio 2019。總結一下分享給大家:
- VS2019 新建.Net Core 3.0 Console應用,新增EFCore相關的Nuget取用
- 增加appSettings.json配置檔案,配置資料庫連線
- 新建OneToMany模型,使用EF Core完成資料庫操作
一、VS2019 新建.Net Core 3.0 Console應用,新增EFCore相關的Nuget取用
1. 新建.Net Core控制檯應用 EFCoreTest
新建完成後,檢視專案的依賴性,我們可以看到:
2. 新增Microsoft.EntityFrameworkCore 3.0 Preview版 Nuget取用
同時新增Microsoft.EntityFrameworkCore.SqlServer3.0 Nuget取用(我們要用到SQL Server)
這樣我們就完成了專案的初始化。
二、增加appsettings.json配置檔案,配置資料庫連線
1. 專案中新增appsettings.json檔案
配置檔案的內容如下:
{"ConnectionStrings": {"BizDatabase": "Server=127.0.0.1;Database=master;User id=sa;password=******" }}
2. 訪問這個appsettings.json配置檔案我們需要取用以下Nuget包:版本用的都是:3.0.0-preview3.19153.1
- Microsoft.Extensions.Configuration
- Microsoft.Extensions.Configuration.Json
三、新建OneToMany模型,使用EF Core完成資料庫操作
這裡以充電站和集控為例,1:M的關聯關係。
這裡我們同時使用了EF的註解,示例了個性化資料庫表結構。以及外來鍵關係
using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Text; namespace EFCoreTest { /// /// 充電站 ///
[Table(“Stations“)]
public class ChargeStation
{
[Key]
[Column(“ID“)]
public string ID { get; set; }
[Required]
[Column(“Code“)]
public string Code { get; set; }
[Required]
[Column(“Name“)]
public string Name { get; set; }
[Required]
[Column(“MaintainTel“)]
public long MaintainTel { get; set; }
[ForeignKey(“StationID“)]
public virtual List Controllers { get; set; }
}
}
using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Text; namespace EFCoreTest { /// /// 電站集控 ///
[Table(“StationCtrl“)]
public class ChargeStationController
{
[Key]
[Column(“ID“)]
public string ID { get; set; }
[Required]
[Column(“Code“)]
public string Code { get; set; }
[Required]
[Column(“ControlAddress“)]
public string ControlAddress { get; set; }
[Required]
[Column(“StationID“)]
[ForeignKey(“StationID“)]
public string StationID { get; set; }
}
}
物體及關聯關係搞定後,我們介紹今天的主角 DbContext的實現:ChargeDbContext
ChargeDbContext 有幾個重要的屬性和方法:
public DbSet Stations { get; set; }
public DbSet StationCtrl { get; set; }
多載OnConfiguring方法,載入配置系統、資料庫連線串
public class ChargeDbContext : DbContext { public DbSet Stations { get; set; } public DbSet StationCtrl { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json"); var configuration = builder.Build(); var conn = configuration.GetConnectionString("BizDatabase"); optionsBuilder.UseSqlServer(conn); } }
至此, 核心主要的EFCore 程式碼已經完成,我們繼續來實現對ChargeStation的資料庫操作:
我們在Main函式中實現對ChargeStation和ChargeStationController的刪除和儲存操作,以下程式碼,大家用過EF應該很熟悉:
class Program { static void Main(string[] args) { using (var context = new ChargeDbContext()) { foreach (var sta in context.Stations.Include(i => i.Controllers)) { context.Remove(sta); } context.SaveChanges(); var station = new ChargeStation { ID = "Station0001", Code = "Station0001", Name = "濟南市奧體中路漢庭充電站", MaintainTel = 13799990001, Controllers = new System.Collections.Generic.List { new ChargeStationController { ID = "Station0001-101", Code = "Station0001-101", ControlAddress = "123456789", StationID = "Station0001" } } }; context.Stations.Add(station); context.SaveChanges(); Console.WriteLine("Press any key!"); Console.ReadKey(); } } }
以上即是EntityFramework Core 3.0 Preview 體驗和使用分享,後續有會有一篇文章介紹在Debug時,如何Trace SQL陳述句。
原文地址:https://www.cnblogs.com/tianqing/p/10661571.html