entity framework 六 自己编写的通用数据类怎么解决

 我来答
百度网友2f757675
2016-09-17 · TA获得超过7233个赞
知道大有可为答主
回答量:7506
采纳率:90%
帮助的人:1932万
展开全部
  query.Skip((pageInfo.PageIndex - 1) * pageInfo.PageSize).Take(pageInfo.PageSize).ToList();这样才会在数据库中分页.

  2.尽量禁用延迟加载,尽量使用预加载和显式加载查询.

  Vs 默认生成的代码,是启用了延迟加载的.这样往往是有些开发人员在不了解的情况下,进行了多次往数据库查询.如下的代码.

  using (SchoolContainer db = new SchoolContainer())

  {

  var list = db.People.Where(ent => ent.PersonID < 30).ToList();

  foreach (var people in list)

  {

  foreach (var ent in people.StudentGrades)

  {

  Console.WriteLine(ent.Grade);

  }

  }

  }

  如果启用延迟加载,这样会造成多次往返数据库查询的.势必造成性能低下.

  因此我们在这里应该使用预加载.代码如下:

  var list = db.People.Include("StudentGrades").Where(ent => ent.PersonID < 30).ToList();

  当然使用了预加载,延迟加载也不会查询多次.但怕在程序员写代码时,忘了要预加载,如果启用了延迟加载,那么就会多次查询数据库.如果不启用,那么程序员就获取不了数据,这样他就马上明白,要进行预加载了.

  当然任何事情不是绝对的.如果被查询的对象,过于复杂,就要慎用预加载

  3.注意事务的简短性.

  在使用事务时,我们要尽量把查询语句或者其他响事务外的语句移在事务外执行.不然让一个事务的时间太长了,就容易引起资源死锁的问题.我上次就优化我一个同事的代码,他代码里就把所所有不相关的东西都放在事务里执行,这样就造成事务的时间太长,当用压力测时,马上就出现资源被锁的错误.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式