.NetCore技术研究-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引用 ? ?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
三、新建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; } 重载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 ? ?? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-3 – 使用纯HTML和MVC 3上传大文件
- asp.net – 每个人如何存储连接字符串?
- mvc项目架构分享系列之架构搭建之Repository和Service
- asp.net – Application_error函数间歇性捕获“文件不存在”
- asp.net-mvc – 为什么自动忽略ApplicationInsights.config
- azure – 创建App Service订阅EMPTY
- asp.net-mvc – Asp.Net MVC:为什么我的视图将NULL模型传递
- asp.net-mvc-2 – 如何在ASP.NET MVC2中枚举formcollection
- asp.net-mvc-5 – 为什么我不能以种子用户身份登录?
- asp.net-mvc – 将数据动态绑定到asp.net mvc中的下拉列表
- Asp.Net Cache,从缓存修改对象,并更改缓存值
- asp.net-mvc – 通配符在asp.net mvc路由
- asp.net:如何在button onclick上使用eventargs进
- .NET Core的日志[5]:利用TraceSource写日志
- asp.net-mvc-3 – 在同一视图中更新多个项目
- asp.net – 弹出窗口,如何在IE8中隐藏URL栏
- asp.net – ASP .net当前物理位置
- asp.net-mvc – 为什么要使用MVC帖子注销?
- asp.net-mvc – 将项目从ASP.NET MVC1迁移到ASP.
- asp.net – 将网站部署到azure和传统的IIS