码迷,mamicode.com
首页 > 其他好文 > 详细

简单的EF codefirst

时间:2018-07-30 23:30:56      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:image   系统   sts   class   generated   模型   存在   count   protect   

废话不多说,直接上图上代码

1、创建模型

技术分享图片

2、优化数据库访问上下文 

 

 1   public class NewPlatformContext : DbContext
 2     { 
 3         public NewPlatformContext()
 4             : base("name=NewPlatform")
 5         {
 6             Database.SetInitializer<NewPlatformContext>(new DropCreateDatabaseIfModelChanges<NewPlatformContext>());   //当实体发生变化时重新创建数据表
 7              
 8             //Database.SetInitializer<NewPlatformContext>(new CreateDatabaseIfNotExists<NewPlatformContext>()); //数据库不存在时重新创建数据表
 9              
10             //Database.SetInitializer<NewPlatformContext>(new DropCreateDatabaseAlways<NewPlatformContext>()); //每次启动应用程序时创建数据表
11              
12             //Database.SetInitializer<NewPlatformContext>(null); //从不创建数据库(系统固定后,不要再重新创建表,不然之前的数据将丢失。)
13         }
14         protected override void OnModelCreating(DbModelBuilder modelBuilder)
15         {
16             modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();   //去除表名中的复数
17             //TODO给关联表加约束
18         }
19         public virtual DbSet<Account> Account{ get; set; } 
20     }
21 
22     public class Account
23     {
24         [Key]
25         [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
26         public int Id { get; set; }
27         public string Name { get; set; }
28         public string Password { get; set; }
29     }
30     public class SeedingDataInitializer : DropCreateDatabaseAlways<NewPlatformContext>
31     {
32         protected override void Seed(NewPlatformContext context)
33         {
34             //TODO初始化信息
35             Account account = new Account() {
36                 Name="Admin",
37                 Password="123456",
38             };
39             context.Account.Add(accout);
40 
41             base.Seed(context);
42         }
43     }

 

 

 

 


最后,
自己不喜欢使用CodeFirst方式进行开发。
1、需要主动声明表public virtual DbSet<Account> Account{ get; set; },很难实现通用的数据库访问基类,在通过泛型的形式由具体数据表对应类进行操作

2、数据库的初始化,以及数据的变动应该是人为的主动修改数据库,
而不是程序运行时自动创建(个人感觉),特别是开发的时候经常有人把数据库给重建了..其他开发人员就懵了 ;
3、表约束在程序中添加,也觉得不合时宜

当然存在即是理由,听说老外们主张codefirst,把业务逻辑理清晰,数据库就有了!

 

简单的EF codefirst

标签:image   系统   sts   class   generated   模型   存在   count   protect   

原文地址:https://www.cnblogs.com/johnyong/p/9393395.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!