欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

EFCore2.1中DbFirst和CodeFirst简单使用

程序员文章站 2022-05-25 15:44:13
EFCore中没有DbFirst了吧,应该都是Code First 先说说第一种,Code First From Database(DbFirst)数据库先行,这种方式就要命令行了...(特不喜欢命令行。。): 1.建好项目后通过 NuGet 安装所需依赖性: 可以右键项目通过管理NuGet程序包的 ......

efcore中没有dbfirst了吧,应该都是code first

先说说第一种,code first from database(dbfirst)数据库先行,这种方式就要命令行了...(特不喜欢命令行。。):

1.建好项目后通过 nuget 安装所需依赖性:

(1)microsoft.entityframeworkcore 
(2)microsoft.entityframeworkcore.design 
(3)microsoft.entityframeworkcore.sqlserver 
(4)microsoft.entityframeworkcore.sqlserver.design 
(5)microsoft.entityframeworkcore.tools 

 

可以右键项目通过管理nuget程序包的方式安装,也可以通过命令安装(找到vs工具栏 ---> nuget 包管理器 ---> 程序包管理控制台):

注意选择默认项目

install-package microsoft.entityframeworkcore 
install-package microsoft.entityframeworkcore.tools 
install-package microsoft.entityframeworkcore.design 
install-package microsoft.entityframeworkcore.sqlserver 
install-package microsoft.entityframeworkcore.sqlserver.design 

 

然后复制,粘贴,看到已用时间:xxxxxxx即可,

 

然后继续在程序包管理控制台再输入:

scaffold-dbcontext -connection "server=.;database=efcoredemo;uid=sa;pwd=123" microsoft.entityframeworkcore.sqlserver -outputdir "models"

 

-outputdir "models" 可不写,efcore中只能通过命令生成了,不能像以前ef6一样可以鼠标操作生成了,如果加上了则会在项目中添加models文件夹,生成的context和实体类都放到models文件夹中,如不加,实体则直接生成到项目中

EFCore2.1中DbFirst和CodeFirst简单使用

最后在控制台测试一下EFCore2.1中DbFirst和CodeFirst简单使用

 

 

再试试第二种熟悉的code first(代码先行,跟以前ef几乎是一模一样),还是比较熟悉这个

前面步骤都是一样的,建好项目,安装依赖包,不过code first好像需要安装两个依赖包就可以了  

microsoft.entityframeworkcore.sqlserver 
microsoft.entityframeworkcore 

编写studnet和classinfo实体类

EFCore2.1中DbFirst和CodeFirst简单使用

 

 EFCore2.1中DbFirst和CodeFirst简单使用

 

然后在编写context上下文类,需要继承dbcontext
    public class codefirstcontext : dbcontext
    {
        public codefirstcontext()
        {

        }
        public codefirstcontext(dbcontextoptions options) : base(options)
        {

        }
        public dbset<student> student { get; set; }
        public dbset<classinfo> classinfo { get; set; }
        protected override void onconfiguring(dbcontextoptionsbuilder optionsbuilder)
        {
            if (!optionsbuilder.isconfigured)
            {
                optionsbuilder.usesqlserver("server=.;database=efcorecodefirst;uid=sa;pwd=123");
            }
        }
        protected override void onmodelcreating(modelbuilder modelbuilder)
        {

        }
    }

EFCore2.1中DbFirst和CodeFirst简单使用

基本上跟ef6差不多的,写好之后测试一下就ok了:
using (codefirstcontext db = new codefirstcontext())
            {
                db.database.ensurecreated();    //数据库不存在则创建,存在则不管
                db.add(new classinfo { classname = "软件二班" });
                var result = db.savechangesasync().result;
                console.writeline(result > 0 ? "成功了" : "失败了");

            }