示例#1
0
        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);
            }
        }
示例#2
0
        /// <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);
        }
示例#3
0
        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);
        }