public void LoadWithFieldMap() { MockRepository mocks = new MockRepository(); FFLib.Data.DBProviders.IDBProvider dbprovider = mocks.Stub<FFLib.Data.DBProviders.IDBProvider>(); FFLib.Data.IDBConnection Conn = mocks.Stub<FFLib.Data.IDBConnection>(); FFLib.Data.DBTable<TestDTO2> dtoTable; TestDTO2 expected = new TestDTO2(); expected.XID = 1; System.Data.DataTable dr = new System.Data.DataTable(); dr.Columns.Add("ID", typeof(int)); dr.Columns.Add("Name", typeof(String)); dr.Columns.Add("Status", typeof(string)); dr.Columns.Add("CreateDate", typeof(DateTime)); System.Data.DataRow drRow = dr.NewRow(); drRow["ID"] = 1; drRow["Name"] = "test"; drRow["Status"] = "open"; drRow["CreateDate"] = DateTime.Now; dr.Rows.Add(drRow); System.Data.IDataReader idr = dr.CreateDataReader(); using (mocks.Record()) { dbprovider.Stub(x => x.ExecuteReader(null, null, null)).IgnoreArguments().Repeat.Any().Return(idr); Conn.Open(); LastCall.Repeat.Any(); Conn.Stub(x => x.InTrx).Repeat.Any().Return(false); Conn.Stub(x => x.dbProvider).Return((FFLib.Data.DBProviders.IDBProvider)dbprovider).Repeat.Any(); Conn.Stub(x => x.State).Repeat.Any().Return(System.Data.ConnectionState.Closed); } using (mocks.Playback()) { dtoTable = new FFLib.Data.DBTable<TestDTO2>(Conn); TestDTO2 result = dtoTable.Load(1); Assert.AreEqual(expected.XID, result.XID); } }
/// <summary> /// Esegue la ricerca /// </summary> /// <returns></returns> internal protected DataListBase doSearch() { try { //Resetta liste this.resetList(); //Appoggia sessione IDataBase db = this.Slot.DbGet(this.mObjSchema); //Appende ORDER BY a query db.SQL = string.Concat(db.SQL, this.mOrderBy.ToString()); //Se presente cache esterna verifica se presente un precedente risultato string sQueryHash = null; DbDataReader rd = null; if (this.mCacheResult) { //Crea hash della query if (this.IsPaged) { sQueryHash = db.GetCurrentQueryHashString(this.Pager.Position, this.Pager.Offset); } else { sQueryHash = db.GetCurrentQueryHashString(0, 0); } //Cerca in cache, se trovata datatable allora crea reader associato var dt = BusinessSlot._ListCache.GetObject(sQueryHash); if (dt != null) { //Resetta il db per evitare di lasciare i parametri allocati db.Reset(); //Crea datareader da datatable rd = dt.CreateDataReader(); } } //Se non caricato da cache procede all'esecuzione della query if (rd == null) { //Carica if (this.IsPaged) { //Query paginata rd = ((CommonDataBase)db).ExecReaderPaged(this.Pager.Position, this.Pager.Offset); } else { //Query standard rd = db.ExecReader(); } //Qui salva in cache se necessario if (this.mCacheResult) { //Crea datatable a partire dal reader var dt = new System.Data.DataTable(); dt.Load(rd); //Salva in cache BusinessSlot._ListCache.SetObject(sQueryHash, dt); //Ricrea il reader dalla tabella rd = dt.CreateDataReader(); } } //Carica dati using (rd) { this.fillListFromReader(rd); } } finally { //Resetta comunque le variabili di esecuzione contesto this.mCacheResult = false; this.mLoadFullObjects = true; this.mIsSearch = false; } this.fireListChanged(ListChangedType.Reset, -1); //Ritorna se stesso per semplificare return(this); }
public bool OutTable(System.Data.DataTable pDataTable) { bool result = false; try { if (DBReadExecute.CheckDatabaseTableExistance(DBReadExecute.ParseConnectionString(this.mContext.CurrentRead.File), pDataTable.TableName)) { DBReadExecute.ExecuteSQL(this.mContext.CurrentRead.File, "Delete From [" + pDataTable.TableName + "]"); DBReadExecute.ExecuteSQL(this.mContext.CurrentRead.File, "Drop Table [" + pDataTable.TableName + "]"); } DBReadExecute.ExecuteSQL(this.mContext.CurrentRead.File, DBReadExecute.GetCreateFromDataTableSQL(pDataTable.TableName, pDataTable)); DBReadExecute.InsertData(this.mContext.CurrentRead.File, "Select * from [" + pDataTable.TableName + "]", pDataTable.CreateDataReader()); result = true; } catch (Exception e) { // do nothing for now } return(result); }