예제 #1
0
파일: DB.cs 프로젝트: dahico-dk/dapper_t2
 /// <summary>***Geri dönüş yapmayan procedureler için***<para />
 /// ÇOK ÖNEMLİ NOT: OUTPUT OLMAYAN PARAMETRELERDE KESİNLİKLE DBTYPE GİRİLMEMELİ. DBTYPE OLANLAR SADECE OUTPUT PARAMETRELERİ<para />
 /// TEKRAR TEKRAR AYNI DB NESNESI KULLANILACAKSA ARALARINDA FLUSHPARAMETRE() METODU KULLANILMALI <para />
 /// outputs=> gerıye donen output parametreleri<para />
 /// Ek-Not: Float==>Single ama Float değerleri doublela karsılamak gerekiyor nedense.<para />
 /// </summary>
 public void SelectSP(string procadi, out List <Dparam> outputs, bool flush = true)
 {
     try
     {
         var p = new DynamicParameters();
         using (IDbConnection _db = new SqlConnection(Helper.connectionstring()))
         {
             foreach (var item in parametreler)
             {
                 p.Add(item.name, item.value);
             }
             foreach (var item in outputparametreler)
             {
                 p.Add(item.name, dbType: item.dbtype, direction: ParameterDirection.Output);
             }
             _db.Query(procadi, p, commandType: System.Data.CommandType.StoredProcedure);
             outputs = new List <Dparam>();
             foreach (var item in outputparametreler)
             {
                 outputs.Add(Dparam.typecaster(p, item.dbtype, item.name));
             }
         }
     }
     catch (Exception e)
     {
         throw;
     }
     finally
     {
         if (flush)
         {
             FlushParameter();
         }
     }
 }
예제 #2
0
파일: DB.cs 프로젝트: dahico-dk/dapper_t2
 /// <summary>
 /// Class based parametreler listesine sadece name-value ikilisi ile parametre ekler. Sadece gonderılen parametreler ıcın.Outputları kapsamaz. Aynı DB ile sorgularda FlushParameters kullanılmalı<para />
 /// </summary>
 public Dparam AddOutputParameter(string name, DbType dbtype)
 {
     try
     {
         Dparam param = new Dparam();
         param.name = name; param.dbtype = dbtype;
         this.outputparametreler.Add(param);
         return(param);
     }
     catch (Exception e)
     {
         throw;
     }
 }
예제 #3
0
파일: DB.cs 프로젝트: dahico-dk/dapper_t2
 /// <summary>
 /// Class based parametreler listesine sadece name-value ikilisi ile parametre ekler. Sadece gonderılen parametreler ıcın.Outputları kapsamaz. Aynı DB ile sorgularda FlushParameters kullanılmalı<para />
 /// </summary>
 public Dparam AddParameter(string name, object value)
 {
     try
     {
         Dparam param = new Dparam();
         param.name = name; param.value = value;
         this.parametreler.Add(param);
         return(param);               //return cokta gereklı degıl aslında
     }
     catch (Exception e)
     {
         throw;
     }
 }
예제 #4
0
파일: DB.cs 프로젝트: dahico-dk/dapper_t2
        /// <summary>***!!!OUTPUTLU PROCLAR ICIN.!!!***<para />
        /// Dönüş değeri generictir. outputs nesnesi geriye name-value ikilisi olarak output degerleri doner.<para />
        /// ÇOK ÖNEMLİ NOT: OUTPUT OLMAYAN PARAMETRELERDE KESİNLİKLE DBTYPE GİRİLMEMELİ. DBTYPE OLANLAR SADECE OUTPUT PARAMETRELERİ<para />
        /// TEKRAR TEKRAR AYNI DB NESNESI KULLANILACAKSA ARALARINDA FLUSHPARAMETRE() METODU KULLANILMALI <para />
        /// Generic metod oldugu için tiplerin baştan belirtilmesi gerekir. <para />
        /// outputs=> gerıye donen output parametreleri<para />
        /// Ek-Not: Float==>Single ama Float değerleri doublela karsılamak gerekiyor nedense.<para />
        /// </summary>
        public List <T> SelectSP <T>(string procadi, out List <Dparam> outputs, bool flush = true)
        {
            try
            {
                var p = new DynamicParameters(); List <T> donenliste = new List <T>();
                using (IDbConnection _db = new SqlConnection(Helper.connectionstring()))
                {
                    foreach (var item in parametreler)
                    {
                        p.Add(item.name, item.value);
                    }

                    foreach (var item in outputparametreler)
                    {
                        p.Add(item.name, dbType: item.dbtype, direction: ParameterDirection.Output);
                    }


                    var returner = _db.Query <T>(procadi, p, commandType: System.Data.CommandType.StoredProcedure);
                    foreach (var item in returner)
                    {
                        donenliste.Add(item);
                    }

                    outputs = new List <Dparam>();

                    foreach (var item in outputparametreler)
                    {
                        outputs.Add(Dparam.typecaster(p, item.dbtype, item.name));
                    }
                }
                //double a = p.Get<double>("@BORC");
                //double b = p.Get<double>("@ALACAK");
                return(donenliste);
            }
            catch (Exception e)
            {
                throw;
            }
            finally
            {
                if (flush)
                {
                    FlushParameter();
                }
            }
        }
예제 #5
0
        public static Dparam typecaster(DynamicParameters p, DbType dbtype, string name)
        {
            try
            {
                Dparam param = new Dparam();
                var    x     = (dynamic)null;
                switch (dbtype)
                {
                case DbType.Boolean:
                    x     = p.Get <bool>(name);
                    param = new Dparam(name, x);
                    break;

                case DbType.Byte:
                    x     = p.Get <byte>(name);
                    param = new Dparam(name, x);
                    break;

                case DbType.Binary:
                    x     = p.Get <byte[]>(name);
                    param = new Dparam(name, x);
                    break;

                case DbType.DateTime:
                    x     = p.Get <DateTime>(name);
                    param = new Dparam(name, x);
                    break;

                case DbType.DateTimeOffset:
                    x     = p.Get <DateTimeOffset>(name);
                    param = new Dparam(name, x);
                    break;

                case DbType.Decimal:
                    x     = p.Get <decimal>(name);
                    param = new Dparam(name, x);
                    break;

                case DbType.Double:
                    x     = p.Get <double>(name);
                    param = new Dparam(name, x);
                    break;

                case DbType.Single:
                    x     = p.Get <float>(name);
                    param = new Dparam(name, x);
                    break;

                case DbType.Guid:
                    x     = p.Get <Guid>(name);
                    param = new Dparam(name, x);
                    break;

                case DbType.Int16:
                    x     = p.Get <short>(name);
                    param = new Dparam(name, x);
                    break;

                case DbType.Int32:
                    x     = p.Get <int>(name);
                    param = new Dparam(name, x);
                    break;

                case DbType.Int64:
                    x     = p.Get <long>(name);
                    param = new Dparam(name, x);
                    break;

                case DbType.Object:
                    x     = p.Get <object>(name);
                    param = new Dparam(name, x);
                    break;

                case DbType.String:
                    x     = p.Get <string>(name);
                    param = new Dparam(name, x);
                    break;

                case DbType.Time:
                    x     = p.Get <TimeSpan>(name);
                    param = new Dparam(name, x);
                    break;

                case DbType.UInt16:
                    x     = p.Get <ushort>(name);
                    param = new Dparam(name, x);
                    break;

                case DbType.UInt32:
                    x     = p.Get <uint>(name);
                    param = new Dparam(name, x);
                    break;

                case DbType.UInt64:
                    x     = p.Get <ulong>(name);
                    param = new Dparam(name, x);
                    break;

                default:
                    //bos param
                    param = new Dparam();
                    break;
                }
                return(param);
            }
            catch (Exception e)
            {
                e = e;
                throw;
            }
        }