Entity Framework:数据库初始化的三种机制
2013-03-04 12:53
197 查看
直接看代码
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data.Entity; namespace Study.CodeFirst { class Program { static void Main(string[] args) { TestDropCreateDatabaseAlways(); TestCreateDatabaseIfNotExists(); TestDropCreateDatabaseIfModelChanges(); } private static void TestDropCreateDatabaseAlways() { //此处每次运行都会创建新的数据库,每次的Id都不一样 Database.SetInitializer<SecurityContext>(new SecurityContextDatabaseInitializerForDropCreateDatabaseAlways()); using (SecurityContext context = new SecurityContext()) { Console.WriteLine(context.Users.First().Id); Console.WriteLine(context.Users.First().Name); } } private static void TestCreateDatabaseIfNotExists() { //此处只有第一次运行才会创建新的数据库,每次的Id都一样。 Database.SetInitializer<SecurityContext>(new SecurityContextDatabaseInitializerForCreateDatabaseIfNotExists()); using (SecurityContext context = new SecurityContext()) { Console.WriteLine(context.Users.First().Id); Console.WriteLine(context.Users.First().Name); } } private static void TestDropCreateDatabaseIfModelChanges() { //测试此处需要修改User模型 //此处只有修噶模型运行才会创建新的数据库,模型变更后,每次的Id都一样。 Database.SetInitializer<SecurityContext>(new SecurityContextDatabaseInitializerForDropCreateDatabaseIfModelChanges()); using (SecurityContext context = new SecurityContext()) { Console.WriteLine(context.Users.First().Id); Console.WriteLine(context.Users.First().Name); } } } public class User { public Guid Id { get; set; } public string Name { get; set; } //public int Age { get; set; } } public class SecurityContext : DbContext { public DbSet<User> Users { get { return this.Set<User>(); } } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<User>(); base.OnModelCreating(modelBuilder); } } public class SecurityContextDatabaseInitializerForDropCreateDatabaseAlways : DropCreateDatabaseAlways<SecurityContext> { protected override void Seed(SecurityContext context) { context.Users.Add(new User() { Id = Guid.NewGuid(), Name = "DropCreateDatabaseAlways" }); base.Seed(context); } } public class SecurityContextDatabaseInitializerForCreateDatabaseIfNotExists : CreateDatabaseIfNotExists<SecurityContext> { protected override void Seed(SecurityContext context) { context.Users.Add(new User() { Id = Guid.NewGuid(), Name = "CreateDatabaseIfNotExists" }); base.Seed(context); } } public class SecurityContextDatabaseInitializerForDropCreateDatabaseIfModelChanges : DropCreateDatabaseIfModelChanges<SecurityContext> { protected override void Seed(SecurityContext context) { context.Users.Add(new User() { Id = Guid.NewGuid(), Name = "DropCreateDatabaseIfModelChanges" }); base.Seed(context); } } }
相关文章推荐
- Spring初始化数据库
- 数据库锁机制
- 数据库的三范式、数据库的锁机制、数据库索引原理
- Spring bean的初始化和销毁三种方式及优先级
- ucos中的三种临界区管理机制
- Spring中数据库连接池的三种配置(dbcp,c3p0,proxool)(转载)
- quartz详解3:quartz数据库集群-锁机制
- code first 创建和初始化数据库
- 游戏服务器中的数据库异步操作技术和游戏数据的保存机制
- 【深入理解C++】从初始化列表和构造函数谈C++的初始化机制
- 【EF6学习笔记】(一)Code First 方式生成数据库及初始化数据库实际操作
- 数据库连接的三种方式..
- EF架构~codeFirst从初始化到数据库迁移
- CSS学习笔记:三种定位机制之三绝对定位
- java中三种方式初始化数据域的方法
- SpringCloud(第 042 篇)链接Mysql数据库,通过JdbcTemplate编写数据库访问,而且支持事物处理机制
- Teradata 数据库技术概略之四 —— 数据分布机制(3) Hash Map
- sql分页查询语句(三种主流数据库)
- Servlet中用于会话跟踪的三种机制
- SDE数据库的恢复与备份,共三种方法