NET Core 使用 EF Code First


         项目使用多层,把数据库访问层,单独放到DAL层里



     一:新建好项目与类库, 并添加好EF依赖


      


      然后在dll层添加好ef的依赖,可以使用Nuget包下载,我们这里使用在DAL.csproj里边配置依赖

      自动下载  Microsoft.EntityFrameworkCore.SqlServer

      


       自动下载完依赖后可以在依赖项中看到

       




  :在DAL层添加好model与上下文对象

   

    

   

    Users.cs:    

    public class Users
    {
        public int Id { get; set; }

        public string UserName { get; set; }

        public string Address { get; set; }

        public int Age { get; set; }
    }

       MyDataContext:     

   public class MyDataContext : DbContext
    {

        public MyDataContext(DbContextOptions<MyDataContext> options)
            : base(options)
        {
        }

        public DbSet<Users> Users { get; set; }

    }

    

   三:在第一层中添加好EF的依赖注入


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

            //添加ef的依赖
            var connection = "server=.;uid=sa;pwd=123456;database=codefirst";
            services.AddDbContext<MyDataContext>(options => options.UseSqlServer(connection));
          
            services.AddMvc();
        }

      第一层中也需要引用名称空间 using Microsoft.EntityFrameworkCore

      因为UseSqlServer这个扩展方法是在这个依赖里边的



    四:使用命令通过代码生成数据库

              


           先输入:Add-Migration  MyFirstMigration(名字)

           输入:Update-Database  


       执行成功后就会更具你配置的连接字符串与model去生成数据库



       执行命令可能遇到的错误

           

           这个是因为执行这个命令还需要一个依赖,在DAL.cspoj中配置好就行

           <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="1.1.1" />




    五:直接在控制器中使用EF

       

     private MyDataContext _context;

        public HomeController(MyDataContext context) //依赖注入得到实例
        {
            _context = context;
        }


        public IActionResult Index()
        {
            //使用ef添加一条数据
            Users us = new Users();
            us.UserName = "xp";
            us.Age = 26;
            us.Address = "jk";

            _context.Users.Add(us);
            _context.SaveChanges();

            return View();
        }

    

    六:在DAL层中使用EF

      

           操作数据库的还是应该放到数据库访问层,而不是直接在控制器里边去写

           


           在DAL层中添加接口IUserDAL        

    public interface IUserDAL
    {
        void Insert();
    }
       

          UserDAL 中去实现IUserDAL并使用EF操作数据库           

    public class UserDAL: IUserDAL
    {

        private MyDataContext _context;
        public UserDAL(MyDataContext context) //依赖注入得到ef实例
        {
            _context = context;
        }

        public void Insert()
        {
            //使用ef添加一条数据
            Users us = new Users();
            us.UserName = "xp";
            us.Age = 26;
            us.Address = "jk";

            _context.Users.Add(us);
            _context.SaveChanges();//保存到数据库
        }
    }

           Startup.cs中配置好DAL层的依赖注入关系        

  services.AddTransient<IUserDAL,UserDAL>();

          控制器中借助DAL层去实现数据库访问    

      private IUserDAL _iud;
        public HomeController(IUserDAL iud) //依赖注入得到DAL层实例
        {
            _iud = iud;
        }

        public IActionResult Index()
        {
            //添加数据
            _iud.Insert();

            return View();
        }

    

        





猜你喜欢

转载自blog.csdn.net/aojiancc2/article/details/76615653