EFCodeFirst 数据库连接

EFCodeFirst 数据库连接

1.NuGet安装实体命令

  1. PM> Install-Package EntityFramework 

2.数据库连接字符串

自动添加得app.Config大体如下:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <configuration> 
  3. <configSections> 
  4. <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
  5. </configSections> 
  6. <entityFramework> 
  7. <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"> 
  8. <parameters> 
  9. <parameter value="Data Source=(local); Database=Portal; User ID=sa; Password=; MultipleActiveResultSets=True" /> 
  10. </parameters> 
  11. </defaultConnectionFactory> 
  12. </entityFramework> 
  13. </configuration> 

设置DefaultConnectionFactory之后,使用Entity Framework连接数据库不需再在其他地方进行设置,Entity Framework也不需要指定数据库连接。

通过配置connectionStrings

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <configuration> 
  3. <connectionStrings> 
  4. <add name="PortalContext" connectionString="Data Source=(local); Database=Portal; User ID=sa; Password=; MultipleActiveResultSets=True" 
  5. providerName="System.Data.SqlClient" /> 
  6. </connectionStrings> 
  7. </configuration> 

3.DbContext连接数据库

  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Linq; 
  4. using System.Text; 
  5.  
  6. using System.Data.Entity; 
  7.  
  8. namespace Portal 

  9. public class PortalContext : DbContext 

  10. static PortalContext() 

  11. Database.SetInitializer<PortalContext>(null); 
  12. //Database.SetInitializer(new CreateDatabaseIfNotExists<PortalContext>()); 
  13. //Database.SetInitializer(new DropCreateDatabaseAlways<PortalContext>()); 
  14. //Database.SetInitializer(new DropCreateDatabaseIfModelChanges<PortalContext>()); 

  15.  
  16. public PortalContext() 
  17. : base("name=PortalContext") 


  18.  
  19. protected override void OnModelCreating(DbModelBuilder modelBuilder) 




静态构造函数中设置数据库的初始化方式,在构造函数中指定App.config的connectionString。

3种初始化方式

  • CreateDatabaseIfNotExists。默认,数据库不存在创建数据库。
  • DropCreateDatabaseWhenModelChanges。数据模型发生改变的时候,先删除,后创建。
  • DropCreateDatabaseAlways。总是先删除后创建,无论模型是否变化。
  • Database.SetInitializer<PortalContext>(null); 关闭初始化功能。

4.基本常用设置

  • 禁用延迟加载(Lazy Loading)
  • 禁用关系数据的级联删除
  • 禁用默认表名复数形式
  1. // 禁用延迟加载 DbContext类中设置 
  2. this.Configuration.LazyLoadingEnabled = false
  3. // 禁用一对多级联删除 OnModelCreating方法中设置 
  4. modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>(); 
  5. // 禁用多对多级联删除 OnModelCreating方法中设置 
  6. modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>(); 
  7. // 禁用默认表名复数形式 OnModelCreating方法中设置 
  8. modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
posted @ 2017-06-21 16:29  明明.如月  阅读(445)  评论(0编辑  收藏  举报