日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

EntityFramework Core 3.0 Preview

發布時間:2023/12/4 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 EntityFramework Core 3.0 Preview 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前段時間.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
    {
    /// <summary>
    /// 充電站
    /// </summary>
    [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<ChargeStationController> Controllers { get; set; }
    }
    }
    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    using System.ComponentModel.DataAnnotations.Schema;
    using System.Text;

    namespace EFCoreTest
    {
    /// <summary>
    /// 電站集控
    /// </summary>
    [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<ChargeStation> Stations { get; set; }
    public DbSet<ChargeStationController> StationCtrl { get; set; }

    重載OnConfiguring方法,加載配置系統、數據庫連接串

    public class ChargeDbContext : DbContext
    {
    public DbSet<ChargeStation> Stations { get; set; }
    public DbSet<ChargeStationController> 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<ChargeStationController>
    {
    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

    .NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的EntityFramework Core 3.0 Preview的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。