歡迎光臨
每天分享高質量文章

EntityFramework Core 3.0 Preview

前段時間.Net Core 3.0 釋出了,Entity Framework Core 3.0 也釋出了Preview版。假期用了一上午大致研究了一遍,同時又體驗了一把Visual Studio 2019。總結一下分享給大家:

  1. VS2019 新建.Net Core 3.0 Console應用,新增EFCore相關的Nuget取用
  2. 增加appSettings.json配置檔案,配置資料庫連線
  3. 新建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

贊(0)

分享創造快樂