zoukankan      html  css  js  c++  java
  • DbContext 那些事 —— 数据库初始化

    数据库初始化

    上图,这个图解释了,数据库初始化的流程,是基于我们在上下文类中的构造函数中传递的参数。

    在上面的图中,context类中的base构造器中,可以填入下面的参数:

    • 无参数(No Parameter)
    • 数据库的名字(Database Name)
    • 连接字符串的名字(Connection String Name)

    无参数


     1 using System;
     2 using System.Collections.Generic;
     3 using System.Data.Entity;
     4 using System.Linq;
     5 using System.Text;
     6 using System.Threading.Tasks;
     7 
     8 namespace EF1
     9 {
    10    public class DbContextClass:DbContext
    11     {
    12        public DbContextClass()
    13            : base()
    14        { }
    15        public DbSet<Student> Studnets { get; set; }
    16 
    17        public DbSet<Standard> Standards { get; set; }
    18 
    19        
    20        protected override void OnModelCreating(DbModelBuilder modelBuilder)
    21        {
    22            Database.SetInitializer(new DropCreateDatabaseIfModelChanges<DbContextClass>());
    23 
    24            base.OnModelCreating(modelBuilder);
    25        }
    26 
    27     }
    28 }

    生成数据库:

    数据库的名字


    你同样可以指定数据库的名字在base构造器中,例如:

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Data.Entity;
     4 using System.Linq;
     5 using System.Text;
     6 using System.Threading.Tasks;
     7 
     8 namespace EF1
     9 {
    10    public class DbContextClass:DbContext
    11     {
    12        public DbContextClass()
    13            : base("MYDBHAHA")
    14        { }
    15        public DbSet<Student> Studnets { get; set; }
    16 
    17        public DbSet<Standard> Standards { get; set; }
    18 
    19        
    20        protected override void OnModelCreating(DbModelBuilder modelBuilder)
    21        {
    22            Database.SetInitializer(new DropCreateDatabaseIfModelChanges<DbContextClass>());
    23 
    24            base.OnModelCreating(modelBuilder);
    25        }
    26 
    27     }
    28 }

    然后生成的数据库是:

    连接字符串


    using System;
    using System.Collections.Generic;
    using System.Data.Entity;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace EF1
    {
       public class DbContextClass:DbContext
        {
           public DbContextClass()
               : base("ConnectionString") //或者你也可以这样 : base("name=ConnectionString")
           { }
           public DbSet<Student> Studnets { get; set; }
    
           public DbSet<Standard> Standards { get; set; }
    
           
           protected override void OnModelCreating(DbModelBuilder modelBuilder)
           {
               Database.SetInitializer(new DropCreateDatabaseIfModelChanges<DbContextClass>());
    
               base.OnModelCreating(modelBuilder);
           }
    
        }
    }

    然后在web.config中加入连接字符串:

    1 <connectionStrings>
    2     <add name="ConnectionString" connectionString="server=.;database=EFCodeFirstDB;uid=sa;pwd=Password_1" providerName="System.Data.SqlClient"/>
    3 </connectionStrings>

    运行程序,在数据库管理工具中就生成了我们想要的数据库:

    就是这么多!

  • 相关阅读:
    2w字 + 40张图带你参透并发编程!
    完了,这个硬件成精了,它竟然绕过了 CPU...
    一文详解 Java 并发模型
    详解匈牙利算法与二分图匹配
    机器学习 | 详解GBDT在分类场景中的应用原理与公式推导
    Python | 浅谈并发锁与死锁问题
    LeetCode 91,点赞和反对五五开,这题是好是坏由你来评判
    LeetCode 90 | 经典递归问题,求出所有不重复的子集II
    【Azure DevOps系列】什么是Azure DevOps
    MSIL入门(四)之委托delegate
  • 原文地址:https://www.cnblogs.com/duanyong/p/5023313.html
Copyright © 2011-2022 走看看