コード例 #1
0
        private IEnumerable <string> GetDataFromDb(string pathArg)
        {
            _repositiry = new AdoRepository(_arg.ConnectionString);
            var path     = Path.Combine(Directory.GetCurrentDirectory(), PathScripts, pathArg);
            var sqlArray = File.ReadAllLines(path);
            var sql      = string.Join(Environment.NewLine, sqlArray);

            sql = sql.Replace(Scheme, _arg.Scheme);
            sql = sql.Replace(TableName, _arg.TableName);

            DataTable table;
            DataSet   set;

            using (set = _repositiry.GetDataSetBySimpleSql(sql))
            {
                if (set == null || set.Tables.Count == 0)
                {
                    throw new ArgumentException(ErrorDidNotGetData);
                }

                table = set.Tables[0];
            }
            var list = (from DataRow row in table.Rows select row[0].ToString()).ToList();

            return(list);
        }
コード例 #2
0
 /// <summary>
 /// 단순 쿼리문에 대해서, ExecuteNonQuery를 수행합니다.
 /// </summary>
 /// <param name="queries"></param>
 protected virtual void ExecuteQueries(IEnumerable <string> queries)
 {
     foreach (var query in queries.Where(q => q.IsNotWhiteSpace()))
     {
         AdoRepository.ExecuteNonQuery(query);
     }
 }
コード例 #3
0
        private void SetStringArrayJS(IncomeStatementTab expenses, string ConnectionString)
        {
            //Writing an array with this format for the chart

            /*['Month', 'Bolivia', 'Ecuador', 'Madagascar', 'Papua New Guinea', 'Rwanda'],
             *         ['2004/05', 165, 938, 522, 998, 450],
             *         ['2005/06', 135, 1120, 599, 1268, 288],
             *         ['2006/07', 157, 1167, 587, 807, 397],
             *         ['2007/08', 139, 1110, 615, 968, 215],
             *         ['2008/09', 136, 691, 629, 1026, 366] */

            var mostExpensiveCategories = (from ex in expenses.report
                                           where ex.bitmap == 1
                                           orderby ex.total descending
                                           select ex.category).Take(4);


            var ado = new AdoRepository <POCO.yearlyExpensePerCategoryLine>(ConnectionString);

            _yearlyExpensePerCategoryLines = ado.YearlyExpensePerCategory(_dossierId,
                                                                          mostExpensiveCategories.ElementAt(0),
                                                                          mostExpensiveCategories.ElementAt(1),
                                                                          mostExpensiveCategories.ElementAt(2),
                                                                          mostExpensiveCategories.ElementAt(3),
                                                                          true);

            StringBuilder sb = new StringBuilder();

            //header
            sb.Append("['year'");
            foreach (var cat in mostExpensiveCategories)
            {
                sb.Append(",'" + cat + "'");
            }
            sb.Append("]");

            _JSDataArray += sb.ToString() + "\n";

            sb = new StringBuilder();

            for (int i = _beginYear; i <= _endYear; i++)
            {
                sb.Append(",['" + i + "'");
                foreach (var cat in mostExpensiveCategories)
                {
                    decimal tot = (from line in _yearlyExpensePerCategoryLines
                                   where line.year == i && line.category == cat
                                   select line.total).FirstOrDefault();

                    string strTot = tot.ToString().Replace(',', '.');

                    sb.Append("," + strTot);
                }
                sb.Append("]");

                _JSDataArray += sb.ToString() + "\n";
                sb            = new StringBuilder();
            }
        }
コード例 #4
0
 public void CanCloseDataReader()
 {
     try {
         using (var reader = AdoRepository.ExecuteReader("SELECT * FROM sysobjects")) {
             // 예외를 일으켜본다. 그래도 Data Reader가 제대로 닫히는지 본다.
             throw new InvalidOperationException("고의로 일으킨 예외입니다.");
         }
     }
     catch {
         // eat exception
     }
 }
コード例 #5
0
        public void FluentByNameMapper_Load()
        {
            INameMapper nameMapper = new CapitalizeNameMapper();

            using (var cmd = AdoRepository.GetCommand("CustOrderHist2")) {
                var orderHistories = AdoRepository.ExecuteInstance <CustomerOrderHistory>(nameMapper, cmd, CustomerTestParameter);

                Assert.Greater(orderHistories.Count, 0);
                CollectionAssert.AllItemsAreNotNull((ICollection)orderHistories);
                CollectionAssert.AllItemsAreInstancesOfType((ICollection)orderHistories, typeof(CustomerOrderHistory));
            }
        }
コード例 #6
0
        public void ListRecordsFullSearch(int dossierId,
                                          string ConnectionString,
                                          string BeginDate,
                                          string EndDate,
                                          int recordCategoryId,
                                          int recordSubcategoryId,
                                          string description,
                                          string comment)
        {
            ObjectCache cache = MemoryCache.Default;

            SetParamsForSearch(dossierId, beginDate, endDate, CurrentPage, ItemsPerPage);


            //TODO: write stored prodecure
            _listRecordsSess = null;


            AdoRepository <POCO.record> AdoRep = new AdoRepository <POCO.record>(ConnectionString);



            if (!IsPostBack)
            {
                //TODO: Implement a caching system different than Session.
                //Try Object Cache
                _listRecordsSess = AdoRep.recordFullSearch(dossierId,
                                                           beginDate,
                                                           endDate,
                                                           recordCategoryId,
                                                           recordSubcategoryId,
                                                           description,
                                                           comment);



                //var list = _context.sp_records_fullsearch(dossierId, recordSubcategoryId, recordCategoryId, beginDate, endDate, description, comment);



                cache.Remove(_ClientSessionId);

                cache.Add(_ClientSessionId, _listRecordsSess, DateTimeOffset.MaxValue);
            }
            else
            {
                _listRecordsSess = (List <POCO.record>)cache[_ClientSessionId];
                //reading object from cache
            }

            SetPagingParams();
            SetPageElems();
        }
コード例 #7
0
        public static void InsertActionTest()
        {
            var originalCount = TotalCount();
            var row           = AdoRepository.ExecuteNonQuery(SQL_REGION_INSERT);

            Assert.AreEqual(1, row);
            var row2 = AdoRepository.ExecuteNonQuery(SQL_REGION_INSERT2);

            Assert.AreEqual(1, row2);
            var insertedCount = TotalCount();

            Assert.AreEqual(originalCount + 2, insertedCount);
        }
コード例 #8
0
        /// <summary>
        /// 요청 쿼리 문을 수행하여, <see cref="ResultSet"/> 으로 빌드하여, 응답 결과를 적용합니다.
        /// </summary>
        protected virtual void OpenQuery(RequestItem requestItem, ResponseItem responseItem, IAdoParameter[] adoParameters)
        {
            if (IsDebugEnabled)
            {
                log.Debug("쿼리문을 수행하여 결과셋을 설정합니다...");
            }

            using (var cmd = AdoRepository.GetCommand(requestItem.Query)) {
                var reader    = AdoRepository.ExecuteReader(cmd, adoParameters);
                var resultSet = reader.CreateResultSet(NameMapper,
                                                       requestItem.FirstResult.GetValueOrDefault(),
                                                       requestItem.MaxResults.GetValueOrDefault(int.MaxValue));

                responseItem.ResultSet = resultSet;
            }
        }
コード例 #9
0
        public void NotCommitted()
        {
            var originalCount = TotalCount();

            AdoWith.ForTesting(() => {
                AdoRepository.ExecuteNonQuery(SQL_REGION_INSERT);
                AdoRepository.ExecuteNonQuery(SQL_REGION_INSERT2);
                var insertedCount = TotalCount();

                Assert.AreEqual(originalCount + 2, insertedCount);
            });

            var rollbackCount = TotalCount();

            Assert.AreEqual(originalCount, rollbackCount);
        }
コード例 #10
0
        /// <summary>
        /// 요청 쿼리 문을 수행하는데,
        /// <see cref="IAdoRepository.ExecuteNonQuery(string,IAdoParameter[])" /> 나
        /// <see cref="IAdoRepository.ExecuteScalar(string,IAdoParameter[])"/> 를 실행합니다.
        /// </summary>
        /// <param name="requestItem"></param>
        /// <param name="responseItem"></param>
        /// <param name="adoParameters"></param>
        protected virtual void ExecuteQuery(RequestItem requestItem, ResponseItem responseItem, IAdoParameter[] adoParameters)
        {
            // Scalar 값 구하기
            if (requestItem.ResponseFormat == ResponseFormatKind.Scalar)
            {
                if (IsDebugEnabled)
                {
                    log.Debug("ExecuteNonScalar 를 수행하여, ResultValue 값을 설정합니다...");
                }

                responseItem.ResultValue = AdoRepository.ExecuteScalar(requestItem.Query, adoParameters);
                return;
            }

            // 쿼리문이라면, 실행
            var query = requestItem.Query;

            if (AdoTool.IsSqlString(query))
            {
                if (IsDebugEnabled)
                {
                    log.Debug("ExecuteNonQuery 를 수행하고, 영향받은 행의 수를 ResultValue에 설정합니다...");
                }

                responseItem.ResultValue = AdoRepository.ExecuteNonQuery(requestItem.Query, adoParameters);
                return;
            }


            if (IsDebugEnabled)
            {
                log.Debug("ExecuteProcedure를 수행하고, Parameter 정보들을 ResultSet에 설정합니다.");
            }

            //  Procedure 라면, Output Parameter 등을 ResultSet으로 반환함.
            //! 단 Procedure가 ResultSet을 반환해야 하는 경우는 OpenQuery를 수행할 수 있도록 ResponseFormat 을 ResponseFormatKind.ResultSet 으로 할 것
            //
            var parameters = AdoRepository.ExecuteProcedure(query, adoParameters);

            if (parameters != null)
            {
                responseItem.ResultValue = parameters.GetReturnValue();

                var row = new ResultRow(parameters.ToDictionary(p => p.Name, p => p.Value));
                responseItem.ResultSet.Add(row);
            }
        }
コード例 #11
0
        public void Batch_ExecuteNonQuery()
        {
            const int    BatchSize   = 30;
            const string commandText = @"DELETE FROM dbo.Region where RegionID > @RegionId";

            var commandSet = new NSoft.NFramework.Data.SqlServer.SqlCommandSet
            {
                Connection = (SqlConnection)AdoTool.CreateTransactionScopeConnection(AdoRepository.Db)
            };

            commandSet.Append((SqlCommand)AdoRepository.GetSqlStringCommand(SQL_REGION_INSERT));
            commandSet.Append((SqlCommand)AdoRepository.GetSqlStringCommand(SQL_REGION_INSERT2));

            for (int i = 0; i < BatchSize; i++)
            {
                var command = AdoRepository.GetSqlStringCommand(commandText, new AdoParameter("RegionId", i + 100, DbType.Int32));
                commandSet.Append((SqlCommand)command);
            }

            var executedCount = commandSet.ExecuteNonQuery();

            // 새로 추가한 위의 2개가 영향을 받습니다.
            executedCount.Should().Be(4);
        }
コード例 #12
0
        public void GetDbType_Binary()
        {
            var type = typeof(byte[]);

            Assert.Equal(DbType.Binary, AdoRepository <TestEntity> .GetDbType(type));
        }
コード例 #13
0
ファイル: Program.cs プロジェクト: Guilegaton/EOrm
        static void Main(string[] args)
        {
            var adoRepo      = new AdoRepository <Truck>(@"Data Source=DESKTOP-C5BMDJ8\SQLEXPRESS;Initial Catalog=Shipment;Integrated Security=True");
            var adoStopwatch = new Stopwatch();

            adoStopwatch.Start();

            var rnd = new Random();
            var obj = new object();

            Parallel.For(0, 100000, (i) =>
            {
                var model = new Truck
                {
                    BrandName          = $"ado brand {i}",
                    Volume             = rnd.Next(10000, 100000),
                    FuelConsumption    = rnd.Next(10, 30),
                    Payload            = rnd.Next(9000, 50000),
                    RegistrationNumber = $"TEST{i}",
                    Year = 2021
                };
                lock (obj)
                {
                    adoRepo.Create(model);
                    adoRepo.CommitChanges();
                    model = adoRepo.GetByField(new Dictionary <System.Linq.Expressions.Expression <Func <Truck, object> >, object> {
                        { tr => tr.BrandName, model.BrandName }
                    });
                }
                Console.WriteLine($"{i}");
            });
            adoStopwatch.Stop();
            adoRepo.Dispose();

            var adoDiconnectedRepo      = new AdoRepositoryDisconnectedAproach <Truck>(@"Data Source=DESKTOP-C5BMDJ8\SQLEXPRESS;Initial Catalog=Shipment;Integrated Security=True");
            var adoDiconnectedStopwatch = new Stopwatch();

            adoDiconnectedStopwatch.Start();
            Parallel.For(0, 100000, (i) =>
            {
                var model = new Truck
                {
                    BrandName          = $"ado dis brand {i}",
                    Volume             = rnd.Next(10000, 100000),
                    FuelConsumption    = rnd.Next(10, 30),
                    Payload            = rnd.Next(9000, 50000),
                    RegistrationNumber = $"TEST{i}",
                    Year = 2021
                };
                lock (obj)
                {
                    adoDiconnectedRepo.Create(model);
                    adoDiconnectedRepo.CommitChanges();
                    model = adoDiconnectedRepo.GetByField(new Dictionary <System.Linq.Expressions.Expression <Func <Truck, object> >, object> {
                        { tr => tr.BrandName, model.BrandName }
                    });
                }
                Console.WriteLine($"{i}");
            });
            adoDiconnectedStopwatch.Stop();
            adoDiconnectedRepo.Dispose();

            var efRepo      = new EFRepository <Truck>();
            var efStopwatch = new Stopwatch();

            efStopwatch.Start();
            Parallel.For(0, 100000, (i) =>
            {
                var model = new Truck
                {
                    BrandName          = $"ef brand {i}",
                    Volume             = rnd.Next(10000, 100000),
                    FuelConsumption    = rnd.Next(10, 30),
                    Payload            = rnd.Next(9000, 50000),
                    RegistrationNumber = $"TEST{i}",
                    Year = 2021
                };
                lock (obj)
                {
                    efRepo.Create(model);
                    efRepo.CommitChanges();
                    model = efRepo.GetByField(new Dictionary <System.Linq.Expressions.Expression <Func <Truck, object> >, object> {
                        { tr => tr.BrandName, model.BrandName }
                    });
                }
                Console.WriteLine($"{i}");
            });
            efStopwatch.Stop();
            efRepo.Dispose();

            var dpRepo      = new EFRepository <Truck>();
            var dpStopwatch = new Stopwatch();

            dpStopwatch.Start();
            Parallel.For(0, 100000, (i) =>
            {
                var model = new Truck
                {
                    BrandName          = $"dapper brand {i}",
                    Volume             = rnd.Next(10000, 100000),
                    FuelConsumption    = rnd.Next(10, 30),
                    Payload            = rnd.Next(9000, 50000),
                    RegistrationNumber = $"TEST{i}",
                    Year = 2021
                };
                lock (obj)
                {
                    dpRepo.Create(model);
                    dpRepo.CommitChanges();
                    model = dpRepo.GetByField(new Dictionary <System.Linq.Expressions.Expression <Func <Truck, object> >, object> {
                        { tr => tr.BrandName, model.BrandName }
                    });
                }
                Console.WriteLine($"{i}");
            });
            dpStopwatch.Stop();
            dpRepo.Dispose();

            Console.WriteLine($"ADO: {adoStopwatch.Elapsed:'HH':'mm':'ss.fffffff'}\r\nADO disc: {adoDiconnectedStopwatch.Elapsed:'HH':'mm':'ss.fffffff'}\r\nEF: {efStopwatch.Elapsed:'HH':'mm':'ss.fffffff'}\r\nDapper: {dpStopwatch.Elapsed:'HH':'mm':'ss.fffffff'}");
        }
    }
}
コード例 #14
0
 public static void DeleteActionTest()
 {
     var row = AdoRepository.ExecuteNonQueryBySqlString(SQL_REGION_DELETE);
 }
コード例 #15
0
 public ModernDomainLayer(MainArg arg)
 {
     _arg        = arg;
     _repositiry = new AdoRepository(_arg.ConnectionString);
 }
コード例 #16
0
        public void GetDbType_DateTime()
        {
            var type = typeof(DateTime);

            Assert.Equal(DbType.DateTime, AdoRepository <TestEntity> .GetDbType(type));
        }
コード例 #17
0
        public void GetDbType_String()
        {
            var type = typeof(string);

            Assert.Equal(DbType.String, AdoRepository <TestEntity> .GetDbType(type));
        }
コード例 #18
0
        public void GetDbType_Int()
        {
            var type = typeof(int);

            Assert.Equal(DbType.Int32, AdoRepository <TestEntity> .GetDbType(type));
        }
コード例 #19
0
        public void GetParameterName_ShouldPrependSymbolAt()
        {
            var propertyInfo = typeof(TestEntity).GetProperty("Id");

            Assert.Equal("@Id", AdoRepository <TestEntity> .GetParameterName(propertyInfo));
        }
コード例 #20
0
 public AdoController(AdoRepository repository)
 {
     this._repository = repository;
 }
コード例 #21
0
ファイル: AdoFixtureBase.cs プロジェクト: 15831944/NFramework
 public static int TotalCount()
 {
     return(AdoRepository.ExecuteScalar(SQL_REGION_COUNT).AsInt(0));
 }