more work on async loading..
This commit is contained in:
parent
6d07baa4b0
commit
a596e197e1
@ -33,6 +33,20 @@ namespace bsmd.database
|
||||
|
||||
#region public methods
|
||||
|
||||
#region convenience loading functions
|
||||
|
||||
public static async Task<List<MessageCore>> LoadMaerskCoresByIntervalAsync(Dictionary<MessageCore.SearchFilterType, string> filterDict, bool loadXtraData = false)
|
||||
{
|
||||
SqlCommand cmd = new SqlCommand();
|
||||
MessageCore aMessageCore = new MessageCore();
|
||||
aMessageCore.PrepareLoadCommand(cmd, Message.LoadFilter.SEARCH_CORE_FILTERS, filterDict);
|
||||
SqlDataReader reader = await PerformCommandAsync(cmd);
|
||||
List<MessageCore> result = await aMessageCore.LoadListAsync(reader);
|
||||
return result;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
@ -7,6 +7,7 @@ using System.Data.SqlClient;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using log4net;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace bsmd.database
|
||||
{
|
||||
@ -466,6 +467,11 @@ namespace bsmd.database
|
||||
}
|
||||
|
||||
public override void PrepareLoadCommand(System.Data.IDbCommand cmd, Message.LoadFilter filter, params object[] criteria)
|
||||
{
|
||||
this.PrepareLoadCommand(cmd, filter, false, criteria);
|
||||
}
|
||||
|
||||
public void PrepareLoadCommand(System.Data.IDbCommand cmd, Message.LoadFilter filter, bool joinXtraData, params object[] criteria)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder("SELECT ");
|
||||
if (this.ResultLimit > 0)
|
||||
@ -492,8 +498,18 @@ namespace bsmd.database
|
||||
}
|
||||
}
|
||||
|
||||
if(joinXtraData)
|
||||
{
|
||||
sb.Append(", [XtraData].[Id], [XtraData].[Field1], "); // ist das so schlau?
|
||||
}
|
||||
|
||||
sb.AppendFormat(" FROM {0} ", this.Tablename);
|
||||
|
||||
if(joinXtraData)
|
||||
{
|
||||
sb.AppendFormat(" LEFT JOIN XtraData ON [{0}].Id = [XtraData].[ReferenceId] ", this.Tablename);
|
||||
}
|
||||
|
||||
this.SetFilters(sb, cmd, filter, criteria);
|
||||
bool latestIdSearch = false;
|
||||
if(filter == Message.LoadFilter.SEARCH_CORE_FILTERS)
|
||||
@ -724,6 +740,26 @@ namespace bsmd.database
|
||||
{
|
||||
List<DatabaseEntity> result = new List<DatabaseEntity>();
|
||||
while(reader.Read())
|
||||
{
|
||||
result.Add(ReadRowFromReader(reader));
|
||||
}
|
||||
reader.Close();
|
||||
return result;
|
||||
}
|
||||
|
||||
public async Task<List<MessageCore>> LoadListAsync(SqlDataReader reader)
|
||||
{
|
||||
List<MessageCore> result = new List<MessageCore>();
|
||||
|
||||
while (await reader.ReadAsync())
|
||||
{
|
||||
result.Add(ReadRowFromReader(reader));
|
||||
}
|
||||
reader.Close();
|
||||
return result;
|
||||
}
|
||||
|
||||
private MessageCore ReadRowFromReader(IDataReader reader)
|
||||
{
|
||||
MessageCore core = new MessageCore();
|
||||
core.id = reader.GetGuid(0);
|
||||
@ -739,8 +775,8 @@ namespace bsmd.database
|
||||
if (!reader.IsDBNull(10)) core.next = reader.GetGuid(10);
|
||||
core.IsTransit = reader.GetBoolean(11);
|
||||
if (!reader.IsDBNull(12)) core.wetris_zz_56_datensatz_id = reader.GetInt32(12);
|
||||
core.BSMDStatusInternal = (BSMDStatus) Enum.ToObject(typeof(BSMDStatus), reader.GetByte(13));
|
||||
core.InitialHIS = (Message.NSWProvider) Enum.ToObject(typeof(Message.NSWProvider), reader.GetByte(14));
|
||||
core.BSMDStatusInternal = (BSMDStatus)Enum.ToObject(typeof(BSMDStatus), reader.GetByte(13));
|
||||
core.InitialHIS = (Message.NSWProvider)Enum.ToObject(typeof(Message.NSWProvider), reader.GetByte(14));
|
||||
if (!reader.IsDBNull(15)) core.HerbergFormGuid = reader.GetGuid(15);
|
||||
if (!reader.IsDBNull(16)) core.HerbergFormTemplateGuid = reader.GetGuid(16);
|
||||
if (!reader.IsDBNull(17)) core.HerbergReportType = reader.GetString(17);
|
||||
@ -748,7 +784,7 @@ namespace bsmd.database
|
||||
if (!reader.IsDBNull(19)) core.HerbergEmail24HrsContact = reader.GetString(19);
|
||||
if (!reader.IsDBNull(20)) core.ETAKielCanal = reader.GetDateTime(20);
|
||||
if (!reader.IsDBNull(21)) core.HerbergRevDate = reader.GetDateTime(21);
|
||||
if (!reader.IsDBNull(22)) core.ReportStatus = (ReportStatusEnum) Enum.ToObject(typeof(ReportStatusEnum), reader.GetByte(22));
|
||||
if (!reader.IsDBNull(22)) core.ReportStatus = (ReportStatusEnum)Enum.ToObject(typeof(ReportStatusEnum), reader.GetByte(22));
|
||||
if (!reader.IsDBNull(23)) core.SietasSheetVersion = reader.GetString(23);
|
||||
if (!reader.IsDBNull(24)) core.Incoming = reader.GetBoolean(24);
|
||||
if (!reader.IsDBNull(25)) core.DefaultReportingPartyId = reader.GetGuid(25);
|
||||
@ -770,10 +806,7 @@ namespace bsmd.database
|
||||
if (!reader.IsDBNull(41)) core.Flags = reader.GetInt32(41);
|
||||
if (!reader.IsDBNull(42)) core.POATA = reader.GetDateTime(42);
|
||||
|
||||
result.Add(core);
|
||||
}
|
||||
reader.Close();
|
||||
return result;
|
||||
return core;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
Loading…
Reference in New Issue
Block a user