用NBear的时候,如果列表显示一组数据,此数据中只是返回少量字段信息,如:id,title等,点击详细后,再出现获取完整记录,如包括的content信息,往往content包含了比较大的数据量,如果返回整个实体,SQL的Reads自然会增加,服务器变做了许多无用的工作,性能自然也不好,我没有找到NBear中有解决相关问题的方法。所以我这里稍微改动了一下NBear,来实现列表数据的查询优化。步骤如下:

1、打开NBear的源代码,

NBear查找指定的列

我们将红线标示的两个文件。

1、修改FromClip.cs中的ToString()方法如下:

NBear查找指定的列public override string ToString()
        }

2、修改SqlQueryUtils.cs中AppendColumnName方法如下:

NBear查找指定的列public static void AppendColumnName(StringBuilder sb, string columnName)
        }


这里面做了简单的限定:如果实体类的开头以两条下划线"__"开头的话,那么就认为是承载未带下划线类的部分数据,承载字段根据承载类的属性确定

完成之后,编译项目。

2、项目中使用刚才我们编译出的NBear.Common.dll
如:EntityDesigns中

NBear查找指定的列    public interface HtmlTable : Entity
    }

项目中

NBear查找指定的列Entities.__HtmlTable[] tables = ServiceFactory.Create().GetService<ICommonService>().GetAllOfEntity<Entities.__HtmlTable>();
NBear查找指定的列        
foreach (Entities.__HtmlTable table in tables)
        }

查看数据检索的SQL语句如下:
NBear查找指定的列
为:SELECT [HtmlTable].[id],[HtmlTable].[title] From [HtmlTable]
而不是:SELECT [HtmlTable].[id],[HtmlTable].[title],[HtmlTable].[context] From [HtmlTable]

这样对性能应该会好些吧。

 

相关文章:

  • 2021-07-26
  • 2022-12-23
  • 2021-09-21
  • 2022-12-23
  • 2021-12-14
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-18
  • 2021-05-29
  • 2022-12-23
  • 2021-07-03
相关资源
相似解决方案