zoukankan      html  css  js  c++  java
  • AspNet Core :创建自定义 EF Core 链接数据库

    这两天比较忙,写的会慢一点。

    我们以控制台演示 EF Core的链接数据库

    首先创建控制台程序

    创建数据上下文类

    EntityTable

     /// <summary>
        /// 继承 DbContext 数据上下文类
        /// 命名空间  using Microsoft.EntityFrameworkCore;
        /// </summary>
        public class EntityTable : DbContext
        {
    
            //在DbContext的构造函数中我们可以接受一个DbContextOptions对象,
            //这个主要用在当在DI容器中创建DbContext实例时会用到,当然它也能被显式调用,通过创建DbCOntextOptions对象来与上下文隔离
            //所以用它可以为每一个上下文的实例使用相同的options,如下:
            public EntityTable(DbContextOptions options) : base(options)
            {
    
            }
            public DbSet<User> User { get; set; }   
        }
        public class User
        {
            [Key]
            public int ID { get; set; }
            public String Name { get; set; }
            public String Age { get; set; }
        }
    View Code

    新建Json配置文件:注意一定要把 Json文件属性改为“始终复制“不然重新生成是Debug文件不会生成,程序读取不到

    Json 内容

    {
      "ConnectionStrings": {
        "SqlServer": "Data Source=DESKTOP-O9UM2R2;Initial Catalog=FirstDB;Persist Security Info=True;User ID=sa;Pwd=su;"
      }
    }
    View Code

    读取Json 文件  链接数据库 读取User表数据

      
                var BuilderAppStting = new ConfigurationBuilder();
                BuilderAppStting.AddJsonFile("json1.json");//加载Json文件
                                                           //取出所有配置节点Key
                var Configuration = BuilderAppStting.Build();
                //重新创建生成数据上下文EntityTable 类的实例  
                var builder = new DbContextOptionsBuilder<EntityTable>();
                //这里的读取配置的方法    把GetSection的工作一次性做完    关于 GetSection在上一篇文中已经体现过
                builder.UseSqlServer(Configuration.GetConnectionString("SqlServer"));
    
                //如果数据库不存 重新实例化 数据上下文类
               // EFConfigProvider eFConfigProvider = new EFConfigProvider(builder);
    
                using (var dbContext = new EntityTable(builder.Options))
                {
                    // Migrate() 将上下文的任何挂起的迁移应用到数据库。将创建
                    //如果还不存在数据库,则为数据库。
                    //请注意,此API与DbContext.Database.EnsureCreated()互斥。
                    //EnsureCreated不使用迁移来创建数据库,因此
                    //创建的数据库以后不能使用迁移更新。
                    dbContext.Database.Migrate();
                    //  EnsureCreated()确保上下文的数据库存在。如果存在,则不进行操作
                    //拿.如果不存在,则创建数据库及其所有模式。
                    //如果数据库存在,则不必努力确保它与
                    //此上下文的模型。
                    //注意,此API不使用迁移来创建数据库。此外,
                    //创建的数据库不能使用迁移稍后更新。如果你
                    //针对关系数据库和应用迁移,你可以使用DbContext migrate()。数据库。
                    //方法以确保创建数据库并应用所有迁移。
                    //dbContext.Database.EnsureCreated();
                    User  ss= dbContext.User.Where(x => x.ID == 1).SingleOrDefault();
    
    
                    dbContext.User.ToList().ToString(); 
    View Code

     读取第一条数据

     项目中还有两个类 总感觉描述的不是很清晰 包括另一种实现EF的方式 还需要加强。

  • 相关阅读:
    Linux 打包文件 及 备份数据库
    YII事务
    MySQL两种存储引擎: MyISAM和InnoDB 简单总结
    mysql锁表查询和解锁操作
    Yii+MYSQL锁表防止并发情况下重复数据的方法
    B/S和C/S的区别及应用【转】
    Yii2.0的乐观锁与悲观锁
    【事务】脏读、不可重复读、幻读解释
    利用非阻塞的文件排他锁
    自定义实例化class
  • 原文地址:https://www.cnblogs.com/szlblog/p/8060343.html
Copyright © 2011-2022 走看看