EFCodeFirst 数据库连接
EFCodeFirst 数据库连接
1.NuGet安装实体命令
- PM> Install-Package EntityFramework
2.数据库连接字符串
自动添加得app.Config大体如下:
- <?xml version="1.0" encoding="utf-8"?>
- <configuration>
- <configSections>
- <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
- </configSections>
- <entityFramework>
- <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
- <parameters>
- <parameter value="Data Source=(local); Database=Portal; User ID=sa; Password=; MultipleActiveResultSets=True" />
- </parameters>
- </defaultConnectionFactory>
- </entityFramework>
- </configuration>
设置DefaultConnectionFactory之后,使用Entity Framework连接数据库不需再在其他地方进行设置,Entity Framework也不需要指定数据库连接。
通过配置connectionStrings
- <?xml version="1.0" encoding="utf-8"?>
- <configuration>
- <connectionStrings>
- <add name="PortalContext" connectionString="Data Source=(local); Database=Portal; User ID=sa; Password=; MultipleActiveResultSets=True"
- providerName="System.Data.SqlClient" />
- </connectionStrings>
- </configuration>
3.DbContext连接数据库
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Data.Entity;
- namespace Portal
- {
- public class PortalContext : DbContext
- {
- static PortalContext()
- {
- Database.SetInitializer<PortalContext>(null);
- //Database.SetInitializer(new CreateDatabaseIfNotExists<PortalContext>());
- //Database.SetInitializer(new DropCreateDatabaseAlways<PortalContext>());
- //Database.SetInitializer(new DropCreateDatabaseIfModelChanges<PortalContext>());
- }
- public PortalContext()
- : base("name=PortalContext")
- {
- }
- protected override void OnModelCreating(DbModelBuilder modelBuilder)
- {
- }
- }
- }
静态构造函数中设置数据库的初始化方式,在构造函数中指定App.config的connectionString。
3种初始化方式
- CreateDatabaseIfNotExists。默认,数据库不存在创建数据库。
- DropCreateDatabaseWhenModelChanges。数据模型发生改变的时候,先删除,后创建。
- DropCreateDatabaseAlways。总是先删除后创建,无论模型是否变化。
- Database.SetInitializer<PortalContext>(null); 关闭初始化功能。
4.基本常用设置
- 禁用延迟加载(Lazy Loading)
- 禁用关系数据的级联删除
- 禁用默认表名复数形式
- // 禁用延迟加载 DbContext类中设置
- this.Configuration.LazyLoadingEnabled = false;
- // 禁用一对多级联删除 OnModelCreating方法中设置
- modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
- // 禁用多对多级联删除 OnModelCreating方法中设置
- modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>();
- // 禁用默认表名复数形式 OnModelCreating方法中设置
- modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
EFCodeFirst 数据库连接的更多相关文章
- EF--Codefirst 加密数据库连接字符串
http://www.tuicool.com/articles/QvYbEn 一.EF,CodeFirst加密SQL连接符 public LifeHelpContext() : base(" ...
- Java数据库连接技术——JDBC
大家好,今天我们学习了Java如何连接数据库.之前学过.net语言的数据库操作,感觉就是一通百通,大同小异. JDBC是Java数据库连接技术的简称,提供连接各种常用数据库的能力. JDBC API ...
- .NET跨平台之旅:数据库连接字符串写法引发的问题
最近在一个ASP.NET Core站点中遇到一个奇怪问题.当用dotnet run命令启动站点后,开始的一段时间请求执行速度超慢,有时要超过20秒,有时甚至超过1分钟,日志中会记录这样的错误: Sys ...
- Entity Framework 6 Recipes 2nd Edition(12-3)译 -> 数据库连接日志
12-3. 数据库连接日志 问题 你想为每次与数据库的连接和断开记录日志 解决方案 EF为DbContext的连接公开了一个StateChange 事件.我们需要处理这个事件, 为每次与数据库的连接和 ...
- 如何修复VUM在客户端启用之后报数据库连接失败的问题
在上一篇随笔中介绍了关于重新注册VMware Update Manager(VUM)至vCenter Server中的方法,最近有朋友反应,原本切换过去好好的更新服务为什么某次使用一下就不灵了? 当时 ...
- JDBC_part1_Oracle数据库连接JDBC以及查询语句
本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! JDBC part1 JDBC概述 jdbc是一种用于 ...
- tornado+sqlalchemy+celery,数据库连接消耗在哪里
随着公司业务的发展,网站的日活数也逐渐增多,以前只需要考虑将所需要的功能实现就行了,当日活越来越大的时候,就需要考虑对服务器的资源使用消耗情况有一个清楚的认知. 最近老是发现数据库的连接数如果 ...
- Java第三方数据库连接池库-DBCP-C3P0-Tomcat内置连接池
连接池原理 数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”.预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去.我们可以通过设定连接池 ...
- Java-加载数据库驱动,取得数据库连接
在Java中想要进行数据库操作,最重要的两个步骤就是加载数据驱动,然后取得数据库连接. 1.加载 数据库驱动( Class.forName(String className) ): 因为Java是一种 ...
随机推荐
- linux开发各种I/O操作简析,以及select、poll、epoll机制的对比
作者:良知犹存 转载授权以及围观:欢迎添加微信公众号:羽林君 IO 概念区分 四个相关概念: 同步(Synchronous) 异步( Asynchronous) 阻塞( Blocking ) 非阻塞( ...
- 黑客整人代码,vbS整人代码大全(强制自动关机、打开无数计算器、无限循环等)
vbe与vbs整人代码大全,包括强制自动关机.打开无数计算器.无限循环等vbs整人代码,感兴趣的朋友参考下.vbe与vbs整人代码例子:set s=createobject("wscript ...
- P6686 混凝土数学
哈哈哈!我爱月赛. 第一次月赛拿到分呢. (卡掉卡掉) 题目描述 你正在看混凝土数学,这时旁边的工地开工了,你觉得看他们施工更有意思,于是你向窗外望去,注意到了一些长度不同的木棍.具体而言,你看到了 ...
- 【LA 3487】Duopoly(图论--网络流最小割 经典题)
题意:C公司有一些资源,每种只有1个,有A.B两个公司分别对其中一些资源进行分组竞标,每组竞标对一些资源出一个总价.问C公司的最大收益. 解法:最小割.将A公司的竞标与源点相连,B公司的与汇点相连,边 ...
- F - To Add Which?
Description There is an integer sequence with N integers. You can use 1 unit of cost to increase any ...
- Best Reward && Girls' research
After an uphill battle, General Li won a great victory. Now the head of state decide to reward him w ...
- 洛谷 P1629 邮递员送信-反向建边
洛谷 P1629 邮递员送信 题目描述: 有一个邮递员要送东西,邮局在节点 11.他总共要送 n-1n−1 样东西,其目的地分别是节点 22 到节点 nn.由于这个城市的交通比较繁忙,因此所有的道路都 ...
- OpenStack服务默认端口号
在某些部署中,例如已设置限制性防火墙的部署,您可能需要手动配置防火墙以允许OpenStack服务流量. 要手动配置防火墙,您必须允许通过每个OpenStack服务使用的端口的流量.下表列出了每个Ope ...
- MySQL 字符集及校验规则
字符集 Mysql 的字符集有4个级别的默认设置:服务器级,数据库级,表级和字段级,客户端交互时,也可以指定字符集 # 字符集:是一个系统支持的所有抽象字符的集合.字符是各种文字和符号的总称,包括各国 ...
- Failed to start LSB 网络服务启动失败
有些时候 VMare虚拟机挂起,重新运行后,XShell远程连接不上,检查VMare虚拟机,重启网卡会报错,查看日志,会有 Failed to start LSB .... CentOS7 会有一个网 ...