.net core mvc中使用ef

Posted 为学日益

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.net core mvc中使用ef相关的知识,希望对你有一定的参考价值。

             使用环境win7+2017



  一.新建一个.net core的MVC项目

           

               

              新建好项目后,不能像以前一样直接在新建项中添加ef,

              需要用命令在添加ef的依赖

  


  二.使用Nuget添加EF的依赖

          

               输入命令:  Install-Package Microsoft.EntityFrameworkCore.SqlServer

               .net core mvc中使用ef


              安装成功后就可以在Nuget依赖项中看到

               .net core mvc中使用ef



  三.如果是使用db first,需要根据数据库生成model,就还需要使用命令添加两个依赖

             

        Install-Package Microsoft.EntityFrameworkCore.Tools

        Install-Package Microsoft.EntityFrameworkCore.SqlServer.Design


            

             安装成功后就可以在Nuget依赖项中看到

              



 四.更具一个命令就可以从数据库生成model了       


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

                  

                     注:执行这一步的时候出现了点问题 ,因为系统是win7,powershell版本太低了,不支持这个命令,需要安装

                        3.0以上的powershell版本才行         



            添加成功后在models可以看到, 生成了上下文对象与和表对应的model


               

             

                


         现在就可以使用EF了

           

 public IActionResult Index()
        {

            FoodContext fc = new FoodContext();

            List<ProType> ptlist = fc.ProType.ToList();

            ViewBag.ptlist = ptlist;

            return View();
        }



         


 五.使用依赖注入来装载EF的上下文对象

           

                .net core中用了不少的依赖注入,官方文档中也推荐使用           


                 1:删除方法

                 

 protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            //#warning To protect potentially sensitive information in your connection string, you should move it out of source code. See http://go.microsoft.com/fwlink/?LinkId=723263 for guidance on storing connection strings.
            optionsBuilder.UseSqlServer(@"Server=.;Database=Food;Trusted_Connection=True;");
        }



                 2:添加方法

                

     public FoodContext(DbContextOptions<FoodContext> options)
            : base(options)
        {

        }

                        


                       添加的是一个构造函数用于注入         

                     

                3:在startup.cs的ConfigureServices方法中添加依赖注入                   

  public void ConfigureServices(IServiceCollection services)
        {
            // Add framework services.
            services.AddMvc();

            services.AddDbContext<FoodContext>(option => {
                option.UseSqlServer("Data Source =.; Initial Catalog = EFCore_dbfirst; User ID = sa; Password = sa.123");
            });
            
        }



                  注:usersqlserver是一个扩展方法,需要添加ef core的引用using Microsoft.EntityFrameworkCore;




以上是关于.net core mvc中使用ef的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC Core/6:EF 6 脚手架错误

EF Core 中的 ASP.NET Core 5 MVC 和 Identity - 基于资源的授权

如何在现有数据库 ASP.NET Core MVC 和 EF Core(DB-First)中使用 Identity

ASP MVC 应用程序中的列加密与使用 .net Core / EF Core 的 SQL Server 2016

对控制器函数的多次调用会导致问题(ASP.NET MVC Web 应用程序中的 EF Core)

ASP.NET MVC4.0+EF+LINQ+bui+网站+角色权限管理系统