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