C#演示在.net core的Winform窗体下接入EF

本文主题:如何在.net core的窗体应用程序Winform环境下,以DB First的方式接入.net core的EntityFramework。

关于Code First的的方式,我之前有写过一个本地加载Sqlite的文章里面有,估计大部人也不知道就是了,那篇文章总共也才几个人阅读。


一、创建项目

本文针对.net core,所以创建Windows Forms App(.NET Core),然后创建1个.net standard的类库,命名为Parctice.Database

二、引入Nuget包

.net core下的关于SqlServer数据库的EF涉及以下2个包:
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.SqlServer.Design

我们是DB First,也就是想要从数据库设计来生成代码,所以还需要一个工具包,这个工具包是用来识别指令(Scaffold-DbContext)的:
Microsoft.EntityFrameworkCore.Tools

通过指令Install-Packag,或者包管理器,均可安装,下面的截图是通过包管理器来安装:

以VS2019为例,包管理器的位置在:工具->Nuget包管理器->管理解决方案的Nuget程序包。或者右键解决方案,也可以找到。

其中Microsoft.EntityFrameworkCore.SqlServer.Design在UI层和数据库访问层,都需要安装,效果如下图:

三、创建我们的数据库设计

由于Sql2019没有数据库关系图,所以,我安装了Sql2016,下面是在Sql2016下设计的。其实Sql2017也一样可以。

如上图,我们简单设计了一个省份、城市表。有了数据库关系图,我要设计表结构以及关系,是很方便快捷的事。这样您就可以理解,我为什么放弃安装Sql2019,改选Sql2016或者Sql2017的原因了吧?因为Sql2019默认没有数据库关系图。

Sql2019估计也是有的,但可能要找插件包。

三、建立项目引用关系

在生成数据库结构代码(DbContext)之前,我们需要让UI层引用Database层


 

四.设置启动项目

需要有一个启动宿主。我们将UI层设为启动项目,如下图:

这里有个话外,不可避免的,我们数据库设计,会随着业务变化而做出修改,那么代码也要重新生成,所以,我们可以单独创建一个宿主项目,这样每次用它来生成代码就行了。

五、打开程序包管理控制台并生成代码

生成代码之前,我们需要将程序包管理控制台的默认项目,修改为数据访问层,如下图:

因为我们是要把代码生成到这里的,所以,默认项目要切换到这里去。它跟宿主启动项目不同,启动项目仍然是UI层。

输入以下指令:

Scaffold-DbContext "Server=.;Database=Practice;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

scaffold-dbcontext(数据库上下文脚手架)指令是用来生成models和context的,即生成模型代码(实体类)和数据库上下文类(Dbcontext的派生类)。关于scaffold-dbcontext指令,您可以网上查找相关文章获取详细说明。

下图是输入指令后的执行画面:

从上图看到,我们生成成功了。然后我们去看下项目是否有对应的代码:

如上图,我们生成出来了,对应的数据库代码,包含实体类Provinces、Cities,以及数据库上下文PracticeContext类。

有了代码后,如何编写基于EF的数据库CRUD,即增删改查,那就是另外一回事了。本文就不讲这些了。

 

祝您用餐愉快。

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值