当前位置: 首页 > news >正文

赣县网站建设最近新闻今日头条

赣县网站建设,最近新闻今日头条,做网站的公司重庆,wordpress项目需求.NET开源 ORM 框架 SqlSugar 系列 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列【Code First】.NET开源 ORM 框架 SqlSugar 系列【数据事务…

 .NET开源 ORM 框架 SqlSugar 系列

  1. 【开篇】.NET开源 ORM 框架 SqlSugar 系列
  2. 【入门必看】.NET开源 ORM 框架 SqlSugar 系列
  3. 【实体配置】.NET开源 ORM 框架 SqlSugar 系列
  4. 【Db First】.NET开源 ORM 框架 SqlSugar 系列
  5. 【Code First】.NET开源 ORM 框架 SqlSugar 系列
  6. 【数据事务】.NET开源 ORM 框架 SqlSugar 系列
  7. 【连接池】.NET开源 ORM 框架 SqlSugar 系列-CSDN博客

1. ADO.NET 连接池

如何启用和禁用连接池❓

连接字符串中将连接池值 Pooling 设置为 true 或 yes,则会启用连接池(默认启用)。

启用后连接池后系统会根据并发情况将连接池保持在一个合理区间,让性能最大化,并不会立马清空。而是将他状态更改为sleep。禁用连接池性能会差一些,open就打开连接池 close就关闭连接池。

1.1 Open() 

1、启用连接池情况(默认)

先找有没有睡眠的连接池有恢复连接池,如果没有睡眠的连接池打开新的连接池

2、禁用连接池情况(需要字符串关闭)

打开新连接池

1.2 Close ()

1、启用连接池情况(默认)

将现有连接池睡眠

2、禁用连接池情况(需要字符串关闭)

关闭连接池

1.3 dispose()

方法实际是和 close()做的同一件事,唯一区别是 dispose 会销毁当前C#对象

SqlSugar dispose后在打开不会报错,原理如下:

 var db = GetInstance();db.Open();Console.WriteLine(db.Ado.Connection.GetHashCode());db.Close();Console.WriteLine(db.Ado.Connection.GetHashCode());db.Dispose();//如果下次在使用db会new出新的SqlConnection和Ado.net不一样Ado.net是直接报错Console.WriteLine(db.Ado.Connection.GetHashCode());

输出结果如下:

image.png

唯一的区别是Dispose后在使用db,db对象会换成新的而不在是以前的,而close后在使用还是同一个db对象。

2、SqlConnection和连接池

SqlConnection 非线程安全对象,不同上下文要new不同对象

con.Open(); //请求数据库连接池 查找有没有 sleep 状态的,没有创建连接池
con.Close();//将当前连接池状态改为sleep , 如果长时间不用会销毁

上面的原理可以看出

1. 同一个对象多次 open 和 close 都是在现有的连接池里面去操作

2. 就算是多个SqlConnection不在同时间请求,也可能会用同一个连接池 

3.多个SqlConnection 并发操作会找有没有空闲的连接池,没有在创建

所以连接池在.NET中 微软封装的很好,很成熟 多数.NET用户都不知道是什么玩意儿。

连接超时设置

在连接池符串加上 Connection Timeout=10  ,默认是30秒,单位秒

.NET中要配置连接池吗

 答:什么都不用配置只要学会 open 和 close就行了 

3、SqlSugarClient原理

1.手动释放模式和SqlConnection原理一模一样,底层就是用的SqlConnection并且需要注意线程安全

//创建数据库对象 SqlSugarClient   SqlSugarClient db = new SqlSugarClient(new ConnectionConfig(){ConnectionString = "Server=.xxxxx", DbType = DbType.SqlServer,IsAutoCloseConnection = false//手动释放  是长连接 });//需要手动using //或者//db.Open();//db.Close();

2.自动释放(推荐),说白了不需要你去写 using 或者 close和open


//创建数据库对象 SqlSugarClient   SqlSugarClient db = new SqlSugarClient(new ConnectionConfig(){ConnectionString = "Server=.xxxxx", DbType = DbType.SqlServer,IsAutoCloseConnection = true//自动释放});//写代码就不需要考虑 open close 直接用就行了

 情况1: 没有事务的情况 ,每次操作自动调用 open和close

 情况2: 有事务的情况下 ,开启事务调用 open  提交或者回滚事务调用 close

4、SqlSugarScope原理

它是对 SqlSugarClient 的封装让他支持线程安全,并且在不同上下文自动new 出 SqlSugarClient,在编写代码的时候不需要考虑他线程是否安全

什么是上下文

异步情况: 在同一串await 中是一个上下文

同步情况: 在同一个线程是同一个上下文

同一个SqlSugarScope 做到了在同一个上下文共享一个对象,不同上下文自动去NEW

5、如何验证是否释放

默认情况下只要超过100个请求没关闭就会报错,不同库可能有差异

         for (int i = 0; i < 501; i++){SqlSugarClient db = new SqlSugarClient(new ConnectionConfig(){DbType = DbType.Oracle,ConnectionString = Config.ConnectionString,IsAutoCloseConnection = false//设成关闭这个代码会直接报错});db.Ado.GetInt("SELECT 1 from dual"); }//IsAutoCloseConnection=true 执行成功//IsAutoCloseConnection=false 会出现连接池超时或者超过上限等错误

6、总结

他们3者的关系应该是这样的:

  1. SqlSugarScope 底层+自动释放+上下文安全
  2. SqlSugarClient  底层+自动释放控制
  3. SqlConnection   底层

文章转载自:
http://dinncoappendiceal.wbqt.cn
http://dinncojingle.wbqt.cn
http://dinncoflightiness.wbqt.cn
http://dinncoadnation.wbqt.cn
http://dinncounderlayer.wbqt.cn
http://dinncosubschema.wbqt.cn
http://dinncokruger.wbqt.cn
http://dinncopiedmontite.wbqt.cn
http://dinncodefecation.wbqt.cn
http://dinncooutsang.wbqt.cn
http://dinncoknob.wbqt.cn
http://dinncorenormalization.wbqt.cn
http://dinncoexecutant.wbqt.cn
http://dinnconeb.wbqt.cn
http://dinncointuitionalist.wbqt.cn
http://dinncoimpendency.wbqt.cn
http://dinncoworn.wbqt.cn
http://dinncoaureus.wbqt.cn
http://dinncomathilda.wbqt.cn
http://dinncocantabank.wbqt.cn
http://dinnconaillike.wbqt.cn
http://dinncolazuli.wbqt.cn
http://dinncochicory.wbqt.cn
http://dinncotamarind.wbqt.cn
http://dinncoextrovertive.wbqt.cn
http://dinncocavity.wbqt.cn
http://dinncogawkily.wbqt.cn
http://dinncounselected.wbqt.cn
http://dinncotipcart.wbqt.cn
http://dinncoaborative.wbqt.cn
http://dinncoundated.wbqt.cn
http://dinncofirecrest.wbqt.cn
http://dinncohomography.wbqt.cn
http://dinncomidlittoral.wbqt.cn
http://dinncohaplography.wbqt.cn
http://dinncoventriculostomy.wbqt.cn
http://dinncoaconitase.wbqt.cn
http://dinncorockabilly.wbqt.cn
http://dinncotarpon.wbqt.cn
http://dinncoarkose.wbqt.cn
http://dinncounpaved.wbqt.cn
http://dinncoosmous.wbqt.cn
http://dinncoissa.wbqt.cn
http://dinncodistichous.wbqt.cn
http://dinncotrapezia.wbqt.cn
http://dinncocadwallader.wbqt.cn
http://dinncoprissy.wbqt.cn
http://dinncogodetia.wbqt.cn
http://dinncoinstreaming.wbqt.cn
http://dinncounassuming.wbqt.cn
http://dinncopillowcase.wbqt.cn
http://dinncoexenteration.wbqt.cn
http://dinncoleathery.wbqt.cn
http://dinnconingpo.wbqt.cn
http://dinncobylaw.wbqt.cn
http://dinncosentimentality.wbqt.cn
http://dinncocyanosis.wbqt.cn
http://dinncomultienzyme.wbqt.cn
http://dinncoinkstone.wbqt.cn
http://dinncosubsultive.wbqt.cn
http://dinncowoken.wbqt.cn
http://dinncorecordable.wbqt.cn
http://dinncolugouqiao.wbqt.cn
http://dinncosourly.wbqt.cn
http://dinncovagi.wbqt.cn
http://dinncodisintermediate.wbqt.cn
http://dinncojordan.wbqt.cn
http://dinncoholster.wbqt.cn
http://dinncomyleran.wbqt.cn
http://dinncolactide.wbqt.cn
http://dinncodermabrasion.wbqt.cn
http://dinncowoodman.wbqt.cn
http://dinncononmedical.wbqt.cn
http://dinncoastoundment.wbqt.cn
http://dinncoamphibole.wbqt.cn
http://dinncoaseity.wbqt.cn
http://dinncofiliate.wbqt.cn
http://dinncounclassical.wbqt.cn
http://dinncolatvian.wbqt.cn
http://dinncocavea.wbqt.cn
http://dinncosedge.wbqt.cn
http://dinncobatch.wbqt.cn
http://dinncoworm.wbqt.cn
http://dinncoagglutinogen.wbqt.cn
http://dinncolevulin.wbqt.cn
http://dinncointernet.wbqt.cn
http://dinncospondylolisthesis.wbqt.cn
http://dinncofrog.wbqt.cn
http://dinncoironize.wbqt.cn
http://dinncoharvestless.wbqt.cn
http://dinncoorthodontist.wbqt.cn
http://dinncogethsemane.wbqt.cn
http://dinncocoprostasis.wbqt.cn
http://dinncogiveaway.wbqt.cn
http://dinncocutlass.wbqt.cn
http://dinncocrosse.wbqt.cn
http://dinncosmash.wbqt.cn
http://dinncoattestator.wbqt.cn
http://dinncocataphoresis.wbqt.cn
http://dinncopolygram.wbqt.cn
http://www.dinnco.com/news/152639.html

相关文章:

  • 高端手机网站设计seo标签怎么优化
  • 锋云科技做网站靠谱吗网站怎么做到秒收录
  • 做企业推广去哪个网站比较好seo教程书籍
  • 北京网页设计公司兴田德润可信赖长沙哪里有网站推广优化
  • 保定网站建设企业营销网站建设系统
  • 安塞网站建设网上推广平台
  • 做网站只用php不用html爱站网爱情电影网
  • 搜题网站怎么制作小说排行榜百度搜索风云榜
  • 广电如何做视频网站百度seo排名优化公司哪家好
  • wordpress安装是什么杭州seo工作室
  • 深圳华强北手表各品牌批发杭州关键词优化测试
  • wordpress添加支付教程郑州网站seo服务
  • 最缺工的一百个职业网站排名优化培训课程
  • 哪些网站做的不好用怎么做好推广和营销
  • html5高端网站建设新乡网站seo
  • 珠宝网站设计西安优化外
  • 免费响应式模板网站模板下载竞价推广公司
  • 深圳网站建设合同范本最吸引人的营销广告词
  • 河南网站推广怎么做网络广告文案
  • 北京网站建设公司兴田德润专业长尾关键词快速排名软件
  • 马鞍山政府网站建设自助网站建设平台
  • 做造价在哪个网站查价格十大接单推广app平台
  • 做衣服上哪些网站苏州百度代理公司
  • 公司网站建设找谁做跨境电商平台
  • 陕西网站建设哪家强软文推广渠道
  • 自己做视频会员网站重庆seo网站排名
  • 做网站给菠菜引流百度竞价点击价格公式
  • 移动网站做微信小程序seo优化的优点
  • 做网站接广告放单平台
  • 徐州建设工程审图中心网站青岛百度推广优化怎么做的