简单的EF codefirst

Posted johnyong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单的EF codefirst相关的知识,希望对你有一定的参考价值。

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

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的主要内容,如果未能解决你的问题,请参考以下文章

EF-CodeFirst-1 玩起来

简单的EF codefirst

EF-CodeFirst-3搞事

EF-CodeFirst-3搞事

EF| CodeFirst 代码先行

EF CodeFirst配置领域类