From 88fa0e7758df78813d25f5991300560c66fa91d3 Mon Sep 17 00:00:00 2001 From: inga-lovinde <52715130+inga-lovinde@users.noreply.github.com> Date: Fri, 20 Apr 2012 20:51:24 +0400 Subject: [PATCH] Post.mentionedUsersIds optimized --- FLocal.Common/dataobjects/Post.cs | 21 ++++++++++----------- Web.Core/DB/IDBConnection.cs | 4 ++++ 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/FLocal.Common/dataobjects/Post.cs b/FLocal.Common/dataobjects/Post.cs index 1d11385..0387e04 100644 --- a/FLocal.Common/dataobjects/Post.cs +++ b/FLocal.Common/dataobjects/Post.cs @@ -391,17 +391,16 @@ namespace FLocal.Common.dataobjects { private IEnumerable mentionedUsersIds { get { - return from mention in Mention.LoadByIds( - from stringId in Config.instance.mainConnection.LoadIdsByConditions( - Mention.TableSpec.instance, - new ComparisonCondition( - Mention.TableSpec.instance.getColumnSpec(Mention.TableSpec.FIELD_POSTID), - ComparisonType.EQUAL, - this.id.ToString() - ), - Diapasone.unlimited - ) select int.Parse(stringId) - ) select mention.mentionedUserId; + return from stringId in Config.instance.mainConnection.LoadIdsByConditions( + Mention.TableSpec.instance, + new ComparisonCondition( + Mention.TableSpec.instance.getColumnSpec(Mention.TableSpec.FIELD_POSTID), + ComparisonType.EQUAL, + this.id.ToString() + ), + Diapasone.unlimited, + Mention.TableSpec.instance.getColumnSpec(Mention.TableSpec.FIELD_MENTIONEDUSERID) + ) select int.Parse(stringId); } } diff --git a/Web.Core/DB/IDBConnection.cs b/Web.Core/DB/IDBConnection.cs index 7f8d2bc..c400f50 100644 --- a/Web.Core/DB/IDBConnection.cs +++ b/Web.Core/DB/IDBConnection.cs @@ -41,6 +41,10 @@ namespace Web.Core.DB { return connection.LoadIdsByConditions(table, conditions, diapasone, joins, new SortSpec[] { new SortSpec(table.getIdSpec(), true) }); } + public static List LoadIdsByConditions(this IDBConnection connection, ITableSpec table, AbstractCondition conditions, Diapasone diapasone, ColumnSpec idSpec, params SortSpec[] sorts) { + return connection.LoadIdsByConditions(table, conditions, diapasone, new JoinSpec[0], sorts, idSpec, false); + } + public static Transaction beginTransaction(this IDBConnection connection) { return connection.beginTransaction(System.Data.IsolationLevel.ReadCommitted); }