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. using System.Data.Entity; 


  6. namespace Portal 



  7. public class PortalContext : DbContext 



  8. static PortalContext() 



  9. Database.SetInitializer<PortalContext>(null); 

  10. //Database.SetInitializer(new CreateDatabaseIfNotExists<PortalContext>()); 

  11. //Database.SetInitializer(new DropCreateDatabaseAlways<PortalContext>()); 

  12. //Database.SetInitializer(new DropCreateDatabaseIfModelChanges<PortalContext>()); 




  13. public PortalContext() 

  14. : base("name=PortalContext") 






  15. 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>(); 

最新文章

  1. JavaScript事件详解-jQuery的事件实现(三)
  2. Arcgis API For IOS扩展AGSDynamicLayer新旧版API对比
  3. ereg/eregi报错处理办法
  4. eclipse 新建 maven 项目 添加 spring hibernate 的配置文件 详情
  5. 运用@media实现网页自适应中的几个关键分辨率
  6. lr_save_var() 截取任意字符串长度,以参数形式输出(参数转变量)
  7. Springboot 框架实现rest接口风格
  8. 想到一个赚钱的APP
  9. Spring事务传播机制和数据库隔离级别
  10. netstat -an查看到大量的TIME_WAIT状态的解决办法
  11. [LeetCode] Random Pick with Weight 根据权重随机取点
  12. [POI2012]SZA-Cloakroom
  13. [转]Angular4---部署---将Angular项目部署到IIS上
  14. springbank 开发日志 springbank是如何注册handler的
  15. Docker学习笔记之通过 Dockerfile 创建镜像
  16. 【Python】多进程1
  17. python编码(四)
  18. Failed&#160;to&#160;execute&#160;goal&#160;org.apache.maven.plugins:maven-compiler-plugin:
  19. shell脚本学习总结01--文件描述符和重定向
  20. python真值表

热门文章

  1. ApiTesting全链路自动化测试框架 - 初版发布(一)
  2. POJ - 3376 Finding Palindromes(拓展kmp+trie)
  3. docker+prom+grafana+altermanager
  4. VXLAN学习之路-结合VRF在Linux中实践VXLAN网络
  5. 缓冲区溢出实验 5 Snprintf
  6. Leetcode(884)-索引处的解码字符串
  7. Leetcode(9)-回文数
  8. Python 相关
  9. 杭电多校HDU 6656 Kejin Player(概率DP)题解
  10. 在竞赛中使用new的问题