用NBear的时候,如果列表显示一组数据,此数据中只是返回少量字段信息,如:id,title等,点击详细后,再出现获取完整记录,如包括的content信息,往往content包含了比较大的数据量,如果返回整个实体,SQL的Reads自然会增加,服务器变做了许多无用的工作,性能自然也不好,我没有找到NBear中有解决相关问题的方法。所以我这里稍微改动了一下NBear,来实现列表数据的查询优化。步骤如下:
1、打开NBear的源代码,
我们将红线标示的两个文件。
1、修改FromClip.cs中的ToString()方法如下:
2、修改SqlQueryUtils.cs中AppendColumnName方法如下:
这里面做了简单的限定:如果实体类的开头以两条下划线"__"开头的话,那么就认为是承载未带下划线类的部分数据,承载字段根据承载类的属性确定
完成之后,编译项目。
2、项目中使用刚才我们编译出的NBear.Common.dll
如:EntityDesigns中
项目中
查看数据检索的SQL语句如下:
为:SELECT [HtmlTable].[id],[HtmlTable].[title] From [HtmlTable]
而不是:SELECT [HtmlTable].[id],[HtmlTable].[title],[HtmlTable].[context] From [HtmlTable]
这样对性能应该会好些吧。