zoukankan      html  css  js  c++  java
  • Entity Framework:数据库初始化的三种机制

    直接看代码

      1 using System;
      2 using System.Collections.Generic;
      3 using System.Linq;
      4 using System.Text;
      5 using System.Threading.Tasks;
      6 
      7 using System.Data.Entity;
      8 
      9 namespace Study.CodeFirst
     10 {
     11     class Program
     12     {
     13         static void Main(string[] args)
     14         {
     15             TestDropCreateDatabaseAlways();
     16 
     17             TestCreateDatabaseIfNotExists();
     18 
     19             TestDropCreateDatabaseIfModelChanges();
     20         }
     21 
     22         private static void TestDropCreateDatabaseAlways()
     23         {
     24             //此处每次运行都会创建新的数据库,每次的Id都不一样
     25             Database.SetInitializer<SecurityContext>(new SecurityContextDatabaseInitializerForDropCreateDatabaseAlways());
     26 
     27             using (SecurityContext context = new SecurityContext())
     28             {
     29                 Console.WriteLine(context.Users.First().Id);
     30                 Console.WriteLine(context.Users.First().Name);
     31             }
     32         }
     33 
     34         private static void TestCreateDatabaseIfNotExists()
     35         {
     36             //此处只有第一次运行才会创建新的数据库,每次的Id都一样。
     37             Database.SetInitializer<SecurityContext>(new SecurityContextDatabaseInitializerForCreateDatabaseIfNotExists());
     38 
     39             using (SecurityContext context = new SecurityContext())
     40             {
     41                 Console.WriteLine(context.Users.First().Id);
     42                 Console.WriteLine(context.Users.First().Name);
     43             }
     44         }
     45 
     46         private static void TestDropCreateDatabaseIfModelChanges()
     47         {
     48             //测试此处需要修改User模型
     49             //此处只有修噶模型运行才会创建新的数据库,模型变更后,每次的Id都一样。
     50             Database.SetInitializer<SecurityContext>(new SecurityContextDatabaseInitializerForDropCreateDatabaseIfModelChanges());
     51 
     52             using (SecurityContext context = new SecurityContext())
     53             {
     54                 Console.WriteLine(context.Users.First().Id);
     55                 Console.WriteLine(context.Users.First().Name);
     56             }
     57         }
     58     }
     59 
     60     public class User
     61     {
     62         public Guid Id { get; set; }
     63 
     64         public string Name { get; set; }
     65 
     66         //public int Age { get; set; }
     67     }
     68 
     69     public class SecurityContext : DbContext
     70     {
     71         public DbSet<User> Users
     72         {
     73             get
     74             {
     75                 return this.Set<User>();
     76             }
     77         }
     78 
     79         protected override void OnModelCreating(DbModelBuilder modelBuilder)
     80         {
     81             modelBuilder.Entity<User>();
     82 
     83             base.OnModelCreating(modelBuilder);
     84         }
     85     }
     86 
     87     public class SecurityContextDatabaseInitializerForDropCreateDatabaseAlways : DropCreateDatabaseAlways<SecurityContext>
     88     {
     89         protected override void Seed(SecurityContext context)
     90         {
     91             context.Users.Add(new User() { Id = Guid.NewGuid(), Name = "DropCreateDatabaseAlways" });
     92 
     93             base.Seed(context);
     94         }
     95     }
     96 
     97     public class SecurityContextDatabaseInitializerForCreateDatabaseIfNotExists : CreateDatabaseIfNotExists<SecurityContext>
     98     {
     99         protected override void Seed(SecurityContext context)
    100         {
    101             context.Users.Add(new User() { Id = Guid.NewGuid(), Name = "CreateDatabaseIfNotExists" });
    102 
    103             base.Seed(context);
    104         }
    105     }
    106 
    107     public class SecurityContextDatabaseInitializerForDropCreateDatabaseIfModelChanges : DropCreateDatabaseIfModelChanges<SecurityContext>
    108     {
    109         protected override void Seed(SecurityContext context)
    110         {
    111             context.Users.Add(new User() { Id = Guid.NewGuid(), Name = "DropCreateDatabaseIfModelChanges" });
    112 
    113             base.Seed(context);
    114         }
    115     }
    116 }
  • 相关阅读:
    delphi datetimepicker 修改时间无效问题
    C#写入文件
    C# winform中listview排序
    C/C++,python,java,C#月经贴问题
    Redis Sentinel 原理简单介绍
    JVM垃圾收集 知识汇总
    Java HotSpot VM Options
    Spring三级缓存解决循环依赖
    Markdown基础用法
    join示例分析
  • 原文地址:https://www.cnblogs.com/happyframework/p/2942578.html
Copyright © 2011-2022 走看看