加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

.NetCore技术研究-EntityFramework Core 3.0 Preview

发布时间:2020-12-16 08:54:11 所属栏目:asp.Net 来源:网络整理
导读:前段时间.Net Core 3.0 发布了,Entity Framework Core 3.0 也发布了Preview版。假期用了一上午大致研究了一遍,同时又体验了一把Visual Studio 2019。总结一下分享给大家: VS2019 新建.Net Core 3.0 Console应用,添加EFCore相关的Nuget引用 增加appSettin

前段时间.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;
 System.Collections.Generic;
 System.ComponentModel.DataAnnotations;
 System.ComponentModel.DataAnnotations.Schema;
 System.Text;

namespace EFCoreTest
{
    /// <summary>
    /// 充电站
    </summary>
    [Table("Stations")]    
    public class ChargeStation
    {
        [Key]
        [Column("ID)]
        string ID { get; set; }

        [Required]
        [Column(Codestring Code { Namestring Name { MaintainTellong MaintainTel { ; }

        [ForeignKey(StationID")]        
        virtual List<ChargeStationController> Controllers { ; }
    }
}
 电站集控
    StationCtrl)]
     ChargeStationController
    {
        [Key]
        [Column()]        
        ControlAddressstring ControlAddress { ; }

        [Required]        
        [Column()]
        [ForeignKey(string StationID { ; }
    }
}

? 实体及关联关系搞定后,我们介绍今天的主角? DbContext的实现:ChargeDbContext

??ChargeDbContext 有几个重要的属性和方法:

public DbSet<ChargeStation> Stations { get; set; }
public DbSet<ChargeStationController> StationCtrl { get; set; }

重载OnConfiguring方法,加载配置系统、数据库连接串

  ChargeDbContext : DbContext 
    {
        public DbSet<ChargeStation> Stations { ; }
        public DbSet<ChargeStationController> StationCtrl { ; }

        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应该很熟悉:

  Program
    {
        static void Main(string[] args)
        {
            using (var context =  ChargeDbContext())
            {                
                foreach (var sta in context.Stations.Include(i => i.Controllers))
                {
                    context.Remove(sta);
                }
               
                context.SaveChanges();

                var station =  ChargeStation
                {
                    ID = Station0001,Code = 济南市奥体中路汉庭充电站13799990001new System.Collections.Generic.List<ChargeStationController>
                    {
                          ChargeStationController
                         {
                              ID = Station0001-101= 123456789
                         }
                    }
                };

                context.Stations.Add(station);
                context.SaveChanges();
                Console.WriteLine(Press any key!);
                Console.ReadKey();
            }
        }
    }

?以上即是EntityFramework Core 3.0 Preview 体验和使用分享,后续有会有一篇文章介绍在Debug时,如何Trace SQL语句。

?

周国庆

2019/05

?

??

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读