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

EFCodeFirst 数据库连接的更多相关文章

  1. EF--Codefirst 加密数据库连接字符串

    http://www.tuicool.com/articles/QvYbEn 一.EF,CodeFirst加密SQL连接符 public LifeHelpContext() : base(" ...

  2. Java数据库连接技术——JDBC

    大家好,今天我们学习了Java如何连接数据库.之前学过.net语言的数据库操作,感觉就是一通百通,大同小异. JDBC是Java数据库连接技术的简称,提供连接各种常用数据库的能力. JDBC API ...

  3. .NET跨平台之旅:数据库连接字符串写法引发的问题

    最近在一个ASP.NET Core站点中遇到一个奇怪问题.当用dotnet run命令启动站点后,开始的一段时间请求执行速度超慢,有时要超过20秒,有时甚至超过1分钟,日志中会记录这样的错误: Sys ...

  4. Entity Framework 6 Recipes 2nd Edition(12-3)译 -> 数据库连接日志

    12-3. 数据库连接日志 问题 你想为每次与数据库的连接和断开记录日志 解决方案 EF为DbContext的连接公开了一个StateChange 事件.我们需要处理这个事件, 为每次与数据库的连接和 ...

  5. 如何修复VUM在客户端启用之后报数据库连接失败的问题

    在上一篇随笔中介绍了关于重新注册VMware Update Manager(VUM)至vCenter Server中的方法,最近有朋友反应,原本切换过去好好的更新服务为什么某次使用一下就不灵了? 当时 ...

  6. JDBC_part1_Oracle数据库连接JDBC以及查询语句

    本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! JDBC part1 JDBC概述 jdbc是一种用于 ...

  7. tornado+sqlalchemy+celery,数据库连接消耗在哪里

    随着公司业务的发展,网站的日活数也逐渐增多,以前只需要考虑将所需要的功能实现就行了,当日活越来越大的时候,就需要考虑对服务器的资源使用消耗情况有一个清楚的认知.     最近老是发现数据库的连接数如果 ...

  8. Java第三方数据库连接池库-DBCP-C3P0-Tomcat内置连接池

    连接池原理 数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”.预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去.我们可以通过设定连接池 ...

  9. Java-加载数据库驱动,取得数据库连接

    在Java中想要进行数据库操作,最重要的两个步骤就是加载数据驱动,然后取得数据库连接. 1.加载 数据库驱动( Class.forName(String className) ): 因为Java是一种 ...

随机推荐

  1. 封装Vue Element的可编辑table表格组件

    前一段时间,有博友在我那篇封装Vue Element的table表格组件的博文下边留言说有没有那种"表格行内编辑"的封装组件,我当时说我没有封装过这样的组件,因为一直以来在实际开发 ...

  2. CF-1445 C - Division 数论,质因数,唯一分解定理

    题意 给定一个 \(p (p\le 10^{18})\), 一个 \(q(q \le 10^9)\), 要找到一个最大的 \(x\) 满足: \(p \%x = 0\) \(q \% x \neq 0 ...

  3. 宝塔Linux面板FTP无法连接的解决办法

    我使用的是阿里云服务器,需要在安全组设置中,对22.21端口放行,并且被动端口(39000 - 40000)也需要处于放行状态(即是指在阿里云安全组的添加端口范围为 39000/40000 的设置) ...

  4. leetcode常见问题

    开学了 开始每日刷leetcode了  ,开一个新分类记录做题过程和心得. 1.出现本地调试无问题但提交后报错时,很有可能是全局变量导致的,解决办法 (1).尽量写成局部变量,函数尽量传参进入. (2 ...

  5. Codeforces Global Round 8 B. Codeforces Subsequences(构造)

    题目链接:https://codeforces.com/contest/1368/problem/B 题意 构造最短的至少含有 $k$ 个 $codeforces$ 子序列的字符串. 题解 如下表: ...

  6. c++ 向上取整和向下取整

    在c++ 中: ceil()表示向上取整 floor()表示向下取整 当然,这很显然对浮点数很好用. 但如果两个int类型的数想要向上取整呢? 我们用 (n-1)/m+1 来表示即可.

  7. Codeforces Round #658 (Div. 2) D. Unmerge (思维,01背包)

    题意:有两个数组\(a\)和\(b\),每次比较它们最左端的元素,取小的加入新的数组\(c\),若\(a\)或\(b\)其中一个为空,则将另一个全部加入\(c\),现在给你一个长度为\(2n\)的数组 ...

  8. Kubernets二进制安装(18)之安装部署Heapster

    1.下载heapster镜像 在运维主机(mfyxw50.mfyxw.com)执行 [root@mfyxw50 ~]# docker pull quay.io/bitnami/heapster:1.5 ...

  9. spring再学习之配置详解

    applicationContext.xml文件配置: bean元素: <?xml version="1.0" encoding="UTF-8"?> ...

  10. 线程池原理讲解——ThreadPoolExecutor

    [这是前几天的存货,留着没发表,今天又复习一遍,润化了部分内容,继续干] 说线程池前,先简单回顾一下线程的状态吧: 1.线程状态转换 线程的五种状态,及其转换关系: 2.线程创建方式 三种:两个接口一 ...