本文整理汇总了C#中NHibernate.Engine.QueryParameters.IsReadOnly方法的典型用法代码示例。如果您正苦于以下问题:C# QueryParameters.IsReadOnly方法的具体用法?C# QueryParameters.IsReadOnly怎么用?C# QueryParameters.IsReadOnly使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NHibernate.Engine.QueryParameters
的用法示例。
在下文中一共展示了QueryParameters.IsReadOnly方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: DoQuery
private IList DoQuery(ISessionImplementor session, QueryParameters queryParameters, bool returnProxies)
{
RowSelection selection = queryParameters.RowSelection;
int maxRows = HasMaxRows(selection) ? selection.MaxRows : int.MaxValue;
int entitySpan = EntityPersisters.Length;
List<object> hydratedObjects = entitySpan == 0 ? null : new List<object>(entitySpan * 10);
IDbCommand st = PrepareQueryCommand(queryParameters, false, session);
IDataReader rs = GetResultSet(st, queryParameters.HasAutoDiscoverScalarTypes, queryParameters.Callable, selection,
session);
// would be great to move all this below here into another method that could also be used
// from the new scrolling stuff.
//
// Would need to change the way the max-row stuff is handled (i.e. behind an interface) so
// that I could do the control breaking at the means to know when to stop
LockMode[] lockModeArray = GetLockModes(queryParameters.LockModes);
EntityKey optionalObjectKey = GetOptionalObjectKey(queryParameters, session);
bool createSubselects = IsSubselectLoadingEnabled;
List<EntityKey[]> subselectResultKeys = createSubselects ? new List<EntityKey[]>() : null;
IList results = new List<object>();
try
{
HandleEmptyCollections(queryParameters.CollectionKeys, rs, session);
EntityKey[] keys = new EntityKey[entitySpan]; // we can reuse it each time
if (Log.IsDebugEnabled)
{
Log.Debug("processing result set");
}
int count;
for (count = 0; count < maxRows && rs.Read(); count++)
{
if (Log.IsDebugEnabled)
{
Log.Debug("result set row: " + count);
}
object result = GetRowFromResultSet(rs, session, queryParameters, lockModeArray, optionalObjectKey, hydratedObjects,
keys, returnProxies);
results.Add(result);
if (createSubselects)
{
subselectResultKeys.Add(keys);
keys = new EntityKey[entitySpan]; //can't reuse in this case
}
}
if (Log.IsDebugEnabled)
{
Log.Debug(string.Format("done processing result set ({0} rows)", count));
}
}
catch (Exception e)
{
e.Data["actual-sql-query"] = st.CommandText;
throw;
}
finally
{
session.Batcher.CloseCommand(st, rs);
}
InitializeEntitiesAndCollections(hydratedObjects, rs, session, queryParameters.IsReadOnly(session));
if (createSubselects)
{
CreateSubselects(subselectResultKeys, queryParameters, session);
}
return results;
}
示例2: GetEnumerable
internal IEnumerable GetEnumerable(QueryParameters queryParameters, IEventSource session)
{
CheckQuery(queryParameters);
bool statsEnabled = session.Factory.Statistics.IsStatisticsEnabled;
var stopWath = new Stopwatch();
if (statsEnabled)
{
stopWath.Start();
}
IDbCommand cmd = PrepareQueryCommand(queryParameters, false, session);
// This IDataReader is disposed of in EnumerableImpl.Dispose
IDataReader rs = GetResultSet(cmd, queryParameters.HasAutoDiscoverScalarTypes, false, queryParameters.RowSelection, session);
HolderInstantiator hi =
HolderInstantiator.GetHolderInstantiator(_selectNewTransformer, queryParameters.ResultTransformer, _queryReturnAliases);
IEnumerable result =
new EnumerableImpl(rs, cmd, session, queryParameters.IsReadOnly(session), _queryTranslator.ReturnTypes, _queryTranslator.GetColumnNames(), queryParameters.RowSelection, hi);
if (statsEnabled)
{
stopWath.Stop();
session.Factory.StatisticsImplementor.QueryExecuted("HQL: " + _queryTranslator.QueryString, 0, stopWath.Elapsed);
// NH: Different behavior (H3.2 use QueryLoader in AST parser) we need statistic for orginal query too.
// probably we have a bug some where else for statistic RowCount
session.Factory.StatisticsImplementor.QueryExecuted(QueryIdentifier, 0, stopWath.Elapsed);
}
return result;
}
示例3: LoadSingleRow
/// <summary>
/// Loads a single row from the result set. This is the processing used from the
/// ScrollableResults where no collection fetches were encountered.
/// </summary>
/// <param name="resultSet">The result set from which to do the load.</param>
/// <param name="session">The session from which the request originated.</param>
/// <param name="queryParameters">The query parameters specified by the user.</param>
/// <param name="returnProxies">Should proxies be generated</param>
/// <returns>The loaded "row".</returns>
/// <exception cref="HibernateException" />
protected object LoadSingleRow(IDataReader resultSet, ISessionImplementor session, QueryParameters queryParameters,
bool returnProxies)
{
int entitySpan = EntityPersisters.Length;
IList hydratedObjects = entitySpan == 0 ? null : new List<object>(entitySpan);
object result;
try
{
result =
GetRowFromResultSet(resultSet, session, queryParameters, GetLockModes(queryParameters.LockModes), null,
hydratedObjects, new EntityKey[entitySpan], returnProxies);
}
catch (HibernateException)
{
throw; // Don't call Convert on HibernateExceptions
}
catch (Exception sqle)
{
throw ADOExceptionHelper.Convert(Factory.SQLExceptionConverter, sqle, "could not read next row of results",
SqlString, queryParameters.PositionalParameterValues,
queryParameters.NamedParameters);
}
InitializeEntitiesAndCollections(hydratedObjects, resultSet, session, queryParameters.IsReadOnly(session));
session.PersistenceContext.InitializeNonLazyCollections();
return result;
}