init lserp cs 5.0
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
using Zhaizj.Framework;
|
||||
using Zhaizj.Framework.Data;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Data;
|
||||
using System.Collections.Generic;
|
||||
using Zhaizj.Framework.ORM.Caching;
|
||||
|
||||
namespace Zhaizj.Framework.ORM.Operation {
|
||||
|
||||
|
||||
internal class FindByOperation {
|
||||
|
||||
private static readonly ILog logger = LogManager.GetLogger( typeof( FindByOperation ) );
|
||||
|
||||
public static Query Find( String condition, ObjectInfo state ) {
|
||||
Includer includer = state.Includer;
|
||||
if (strUtil.HasText( includer.SelectedProperty ) && (includer.SelectedProperty != "*")) {
|
||||
Query query = new Query( condition, state );
|
||||
return query.select( includer.SelectedProperty );
|
||||
}
|
||||
return new Query( condition, state );
|
||||
}
|
||||
|
||||
internal static IList Find( ConditionInfo condition ) {
|
||||
|
||||
IList results = ObjectPool.FindByQuery( condition );
|
||||
if (results != null) return results;
|
||||
|
||||
if ("*".Equals( condition.SelectedItem )) {
|
||||
condition.State.includeAll();
|
||||
}
|
||||
else {
|
||||
condition.State.include( SqlBuilder.GetIncludeProperty( condition.SelectedItem ) );
|
||||
}
|
||||
|
||||
IList includeEntityPropertyList = condition.State.Includer.EntityPropertyList;
|
||||
IDbCommand cmd = DataFactory.GetCommand( condition.Sql, DbContext.getConnection( condition.State.EntityInfo ) );
|
||||
foreach (String key in condition.Parameters.Keys) {
|
||||
DataFactory.SetParameter( cmd, key, condition.Parameters[key] );
|
||||
}
|
||||
|
||||
Hashtable hashtable = new Hashtable();
|
||||
IDataReader record = null;
|
||||
results = new ArrayList();
|
||||
try {
|
||||
record = cmd.ExecuteReader();
|
||||
while (record.Read()) {
|
||||
EntityPropertyUtil.Fill_EntityProperty_Ids( record, includeEntityPropertyList, ref hashtable );
|
||||
results.Add( FillUtil.Populate( record, condition.State ) );
|
||||
}
|
||||
}
|
||||
catch (Exception ex) {
|
||||
logger.Error( ex.Message );
|
||||
logger.Error( ex.StackTrace );
|
||||
throw ex;
|
||||
}
|
||||
finally {
|
||||
OrmHelper.CloseDataReader( record );
|
||||
}
|
||||
|
||||
if (results.Count == 0) return results;
|
||||
|
||||
return EntityPropertyUtil.setEntityProperty( condition.State, results, hashtable );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user