Skip to main content
 首页 » 编程设计

AspNet Core :创建自定义 EF Core 链接数据库

2022年07月15日151虾米姐

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

我们以控制台演示 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; } 
    }

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

Json 内容

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

读取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(); 

 读取第一条数据

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


本文参考链接:https://www.cnblogs.com/szlblog/p/8060343.html
阅读延展