当前位置: 移动技术网 > IT编程>开发语言>.net > EFCore2.1中DbFirst和CodeFirst简单使用

EFCore2.1中DbFirst和CodeFirst简单使用

2018年09月03日  | 移动技术网IT编程  | 我要评论

香油煎鸡蛋,99bt核工厂,少年阿宾快眼看书

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文件夹中,如不加,实体则直接生成到项目中

最后在控制台测试一下

 

 

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

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

microsoft.entityframeworkcore.sqlserver 
microsoft.entityframeworkcore 

编写studnet和classinfo实体类

 

 

 

然后在编写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)
        {

        }
    }

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

            }



如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网