ADO.NET Entity Framework Feature 中的 CodeFirst 创建数据库和实体类

以前在使用ADO.NET Entity Framework开发时,碰到过一个问题,Model和数据层不能完全分离。之后在ADO.NET Entity Framework 4中又有了ModelFirst模式,现在在ADO.NET Entity Framework Feature中又增加了CodeFirst模式。本文介绍通过Model代码生成数据库及从数据库生成Model代码。

从代码生成数据库

既然是CodeFirst,当然需要Code完成后能自动生成数据库了。

1. 添加对EntityFramework和System.Data.Entity的引用。

2. 写一个User类和Group类,User和Group是多对一的关系

 

ExpandedBlockStart.gif 用户实体类
 1  ///   <summary>
 2  ///  用户实体类
 3  ///   </summary>
 4  public   class  User
 5  {
 6       ///   <summary>
 7       ///  ID
 8       ///   </summary>
 9       public  Guid ID {  get set ; }
10 
11       ///   <summary>
12       ///  名字
13       ///   </summary>
14       public   string  Name {  get set ; }
15 
16       ///   <summary>
17       ///  用户组别
18       ///   </summary>
19       public   virtual  Group Group {  get set ; }
20  }

 

 

 

ExpandedBlockStart.gif 用户组实体类
 1  ///   <summary>
 2  ///  用户组实体类
 3  ///   </summary>
 4  public   class  Group
 5  {
 6       ///   <summary>
 7       ///  ID
 8       ///   </summary>
 9       public  Guid ID {  get set ; }
10 
11       ///   <summary>
12       ///  组名
13       ///   </summary>
14       public   string  Name {  get set ; }
15 
16       ///   <summary>
17       ///  用户集合
18       ///   </summary>
19       public   virtual  ICollection < User >  Users {  get set ; }
20  }

 

3. 写一个继承自DBContext的类

 

ExpandedBlockStart.gif DataContext
 1  ///   <summary>
 2  ///  数据上下文
 3  ///   </summary>
 4  public   class  DataContext : DbContext
 5  {
 6       ///   <summary>
 7       ///  用户
 8       ///   </summary>
 9       public  DbSet < User >  Users {  get set ; }
10 
11       ///   <summary>
12       ///  用户组
13       ///   </summary>
14       public  DbSet < Group >  Groups {  get set ; }
15  }

 

 

这里我们还可以重写OnModelCreating方法来对数据库的生成做一些设置,如某些列的最大长度等信息。

4. 检查数据库连接字符串

默认的数据库连接字符串将连接到.\SQLEXPRESS实例,这个是可以修改的。一个修改方法是在DataContext的构造函数中修改。如:

1  ///   <summary>
2  ///  构造函数
3  ///   </summary>
4  public  DataContext()
5      :  base ( " EFCodeFirstStartConnectionString " )
6  {
7  }

 

 

其中EFCodeFirstStartConnectionString是连接字符串的名字

5. 当你对数据库执行操作时,如果它不存在,就会按照Model的代码来创建一个。也可以显式地用代码来创建。

1  DbContext.Database.CreateIfNotExists();

 

1  DbContext.Database.Create();

 

 

从数据库生成代码

如果已经有数据库了也不必完全手写Model代码。

1. 新建一个ADO.NET Entity Data Model

2. 选择Generate from database

3. 选择需要生成代码的表

4. 右键单击emdx文件并选择Add Code Generation Item

5. 在弹出的Add New Item对话框中选择ADO.NET DbContext Generator

6. 在Solution Explorer中可以找到模版文件和生成的代码文件

 

示例下载(Visual Studio 2010)

 

本文适用于 ADO.NET Entity Framework Feature CTP5

 

转载于:https://www.cnblogs.com/snowdream/archive/2011/01/22/entity-framework-feature-codefirst-create-database-and-model.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值