Entity Framework CodeFirst 尝试

  前言

  使用EF框架 Code First 时,可使用 DataAnnotations和 Fluent API两种方法来配置 EF映射到数据库的规则。但是DataAnnotations仅涵盖一部分 Fluent API 功能,因此有一些情况是无法使用DataAnnotations实现的。除了控制映射之外,Fluent API 和DataAnnotations还可用于配置约束,如字段长度或必需属性,此时这些配置的约束将影响 EF所创建的数据库以及EF框架所执行的验证。

  安装EF框架

  安装EntityFramework框架。可以使用NuGet工具来帮我们管理这些引用的外部框架。关于NuGet,可以参考:http://www.cnblogs.com/multiplesoftware/archive/2011/03/15/1984385.html

 

  (1)使用NuGet进行在线安装EF框架。选中项目文件,右键选择"管理NuGet程序包...”

  

  (2)选择联机;在搜索框中输入“EntityFramework”搜索

  

  (3)点击安装,并接受许可条件,耐心等待安装过程。

  (4)app.config文件

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <configuration>
 3   <configSections>
 4     <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
 5     <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
 6   </configSections>
 7   <entityFramework>
 8     <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
 9       <parameters>
10         <parameter value="v11.0" />
11       </parameters>
12     </defaultConnectionFactory>
13     <providers>
14       <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
15     </providers>
16   </entityFramework>
17 </configuration>

  (5)EF安装完毕后,项目引用了EF的相关dll。并在app.config中生成了EF的相关配置节。

  

  

  体验EF

   (1)新增两个类

1     public class Chain
2     {
3         public int Id { get; set; }
4 
5         public string Name { get; set; }
6 
7         public virtual ICollection<Hotel> Hotels { get; set; }
8     }

 

 1     public class Hotel
 2     {
 3         public int Id { get; set; }
 4 
 5         public string Name { get; set; }
 6 
 7         public string Address { get; set; }
 8 
 9         public virtual Chain Chain { get; set; }
10     }

   (2)创建数据库上下文操作类

 1 using System.Data.Entity;
 2 
 3 namespace EntFra01
 4 {
 5     public class EntFraContext : DbContext
 6     {
 7         public IDbSet<Chain> Chains { get; set; }
 8 
 9         public IDbSet<Hotel> Hotels { get; set; }
10     }
11 }

  (3)代码调用

 1     using(EntFraContext context = new EntFraContext())
 2     {
 3         Hotel hotel = new Hotel()
 4         {
 5             Name = "Xxx大酒店",
 6             Address = "世纪大道xxx号",
 7         };
 8 
 9         Chain chain = new Chain()
10         {
11             Name = "Xxx连锁",
12             Hotels = new Hotel[] { hotel }
13         };
14 
15         context.Chains.Add(chain);
16         context.SaveChanges();
17 
18         foreach(var item in context.Hotels)
19         {
20             Console.WriteLine(item.Name);
21         }
22     }

  (4)运行效果

  

  

  (5)EF默认生成的数据库。

  我们并没有修改app.config,也没有设置数据库的连接字符串。那么生成的数据库在哪儿呢?经过一番查找,终于在用户文件下找到。默认生成的数据库名称为:<解决方案名称>.XxxContext

  

  

posted @ 2015-05-06 22:18  lcyan  阅读(116)  评论(0编辑  收藏  举报