示例#1
1
        public void BulkCopyLinqTypes(string context)
        {
            foreach (var bulkCopyType in new[] { BulkCopyType.MultipleRows, BulkCopyType.ProviderSpecific })
            {
                using (var db = new DataConnection(context))
                {
                    db.BulkCopy(
                        new BulkCopyOptions { BulkCopyType = bulkCopyType },
                        Enumerable.Range(0, 10).Select(n =>
                            new LinqDataTypes
                            {
                                ID            = 4000 + n,
                                MoneyValue    = 1000m + n,
                                DateTimeValue = new DateTime(2001,  1,  11,  1, 11, 21, 100),
                                BoolValue     = true,
                                GuidValue     = Guid.NewGuid(),
                                SmallIntValue = (short)n
                            }
                        ));

                    db.GetTable<LinqDataTypes>().Delete(p => p.ID >= 4000);
                }
            }
        }
            public static IEnumerable<SqlTypes> Data(string context)
            {
                if (_data == null)
                    using (var db = new DataConnection(context.Replace(".LinqService", "")))
                        _data = db.GetTable<SqlTypes>().ToList();

                foreach (var item in _data)
                    yield return item;
            }
示例#3
1
        void BulkCopyTest(string context, BulkCopyType bulkCopyType)
        {
            using (var conn = new DataConnection(context))
            {
                conn.BeginTransaction();

                conn.BulkCopy(new BulkCopyOptions { MaxBatchSize = 50000, BulkCopyType = bulkCopyType },
                    Enumerable.Range(0, 100000).Select(n =>
                        new AllType
                        {
                            ID                  = 2000 + n,
                            bigintDataType      = 3000 + n,
                            smallintDataType    = (short)(4000 + n),
                            tinyintDataType     = (sbyte)(5000 + n),
                            mediumintDataType   = 6000 + n,
                            intDataType         = 7000 + n,
                            numericDataType     = 8000 + n,
                            decimalDataType     = 9000 + n,
                            doubleDataType      = 8800 + n,
                            floatDataType       = 7700 + n,
                            dateDataType        = DateTime.Now,
                            datetimeDataType    = DateTime.Now,
                            timestampDataType   = null,
                            timeDataType        = null,
                            yearDataType        = (1000 + n) % 100,
                            year2DataType       = (1000 + n) % 100,
                            year4DataType       = null,
                            charDataType        = 'A',
                            varcharDataType     = "",
                            textDataType        = "",
                            binaryDataType      = null,
                            varbinaryDataType   = null,
                            blobDataType        = new byte[] { 1, 2, 3 },
                            bitDataType         = null,
                            enumDataType        = "Green",
                            setDataType         = "one",
                            intUnsignedDataType = (uint)(5000 + n),
                        }));

                //var list = conn.GetTable<ALLTYPE>().ToList();

                conn.GetTable<DB2Test.ALLTYPE>().Delete(p => p.SMALLINTDATATYPE >= 5000);
            }
        }
示例#4
0
		static void Main(string[] args)
		{
			SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);

			using (var db = new DataConnection())
			{
				var list = db.GetTable<AllTypes2>().ToList();
			}
		}
示例#5
0
		public void Test()
		{
			//var conn = new System.Data.SQLite.SQLiteConnection();
			//var conn = new IBM.Data.Informix.IfxConnection();

			using (var db = new DataConnection("SqlServer.2012"))
			{
				var count = db.GetTable<Parent>().Count();
			}
		}
 //        [Fact]
 public void Test()
 {
     if (TestBase.UserProviders.ContainsKey("SqlServer.2012"))
     {
         using (var db = new DataConnection("SqlServer.2012"))
         {
             var count = db.GetTable<Parent>().Count();
         }
     }
 }
示例#7
0
		public void InsertTest2([Values(
			ProviderName.SqlServer, ProviderName.Access, ProviderName.DB2, ProviderName.Firebird, 
			ProviderName.Informix, ProviderName.MySql, ProviderName.Oracle, ProviderName.PostgreSQL,
			ProviderName.SqlCe, ProviderName.SQLite, ProviderName.Sybase)] string configString)
		{
			using (var db = new DataConnection(configString))
			{
				db.GetTable<TestTable>()
					.Insert(() => new TestTable
					{
						Name      = "Crazy Frog",
						CreatedOn = Sql.CurrentTimestamp
					});
			}
		}
示例#8
0
		public void DeleteBigTableTest([Values(
			ProviderName.SqlServer,  
			ProviderName.Oracle,
			ProviderName.Sybase)] string configString)
		{
			using (var db = new DataConnection(configString))
			{
				while (db.GetTable<TestTable>().Take(10000).Delete() > 0);
			}
		}
示例#9
0
		public void DeleteTest([Values(
			ProviderName.SqlServer, ProviderName.Access, ProviderName.DB2, ProviderName.Firebird, 
			ProviderName.Informix, ProviderName.MySql, ProviderName.Oracle, ProviderName.PostgreSQL,
			ProviderName.SqlCe, ProviderName.SQLite, ProviderName.Sybase)] string configString)
		{
			using (var db = new DataConnection(configString))
			{
				db
					.GetTable<TestTable>()
					.Where(t => t.ID == 1)
					.Delete();
			}
		}
示例#10
0
		public void UpdateTest4([Values(
			ProviderName.SqlServer, ProviderName.Access, ProviderName.DB2, ProviderName.Firebird, 
			ProviderName.Informix, ProviderName.MySql, ProviderName.Oracle, ProviderName.PostgreSQL,
			ProviderName.SqlCe, ProviderName.SQLite, ProviderName.Sybase)] string configString)
		{
			using (var db = new DataConnection(configString))
			{
				db
					.GetTable<TestTable>()
					.Where(t => t.ID == 1)
					.Set(t => t.Name,      t => "Crazy Frog IV")
					.Set(t => t.CreatedOn, t => t.CreatedOn.Value.AddHours(1))
					.Update();
			}
		}
示例#11
0
		public void UpdateTest3([Values(
			ProviderName.SqlServer, ProviderName.Access, ProviderName.DB2, ProviderName.Firebird, 
			ProviderName.Informix, ProviderName.MySql, ProviderName.Oracle, ProviderName.PostgreSQL,
			ProviderName.SqlCe, ProviderName.SQLite, ProviderName.Sybase)] string configString)
		{
			using (var db = new DataConnection(configString))
			{
				db
					.GetTable<TestTable>()
					.Update(
						t => t.ID == 1,
						t => new TestTable
						{
							Name = "Crazy Frog",
						});
			}
		}
示例#12
0
        public void UpdateAssociation5(string context)
        {
            using (var db = new DataConnection(context))
            {
                var ids = new[] { 10000, 20000 };

                db.GetTable<Table2>()
                    .Where (x => ids.Contains(x.ParentID))
                    .Select(x => x.Table1)
                    .Distinct()
                    .Set(y => y.BoolValue, y => y.Tables2.All(x => x.Value1))
                    .Update();

                var idx = db.LastQuery.IndexOf("INNER JOIN");

                Assert.That(idx, Is.Not.EqualTo(-1));

                idx = db.LastQuery.IndexOf("INNER JOIN", idx + 1);

                Assert.That(idx, Is.EqualTo(-1));
            }
        }
示例#13
0
        public void ExposeSqlStringParameter(string context)
        {
            using (var db = new DataConnection(context))
            {
                var p   = "abc";
                var sql = db.GetTable<Person>().Where(t => t.FirstName == p).ToString();

                Console.WriteLine(sql);

                Assert.That(sql, Contains.Substring("(3)"));
            }
        }
示例#14
0
        public void ExposeSqlBinaryParameter(string context)
        {
            using (var db = new DataConnection(context))
            {
                var p   = new byte[] { 0, 1, 2 };
                var sql = db.GetTable<AllTypes>().Where(t => t.BinaryDataType == p).ToString();

                Console.WriteLine(sql);

                Assert.That(sql, Contains.Substring("(3)").Or.Contains("Blob"));
            }
        }
示例#15
0
        public void TestTransaction2(string context)
        {
            using (var db = new DataConnection(context))
            {
                db.GetTable<Parent>().Update(p => p.ParentID == 1, p => new Parent { Value1 = 1 });

                using (var tran = db.BeginTransaction())
                {
                    db.GetTable<Parent>().Update(p => p.ParentID == 1, p => new Parent { Value1 = null });

                    Assert.IsNull(db.GetTable<Parent>().First(p => p.ParentID == 1).Value1);

                    tran.Rollback();

                    Assert.That(1, Is.EqualTo(db.GetTable<Parent>().First(p => p.ParentID == 1).Value1));
                }
            }
        }
示例#16
0
 public void BulkCopyProviderSpecificLowerCaseColumns(string context)
 {
     using (var db = new DataConnection(context))
     {
         var result = db.BulkCopy(
             new BulkCopyOptions { BulkCopyType = BulkCopyType.ProviderSpecific },
             Enumerable.Range(0, 10).Select(n =>
                 new BulkInsertLowerCaseColumns
                 {
                     ID = 4000 + n,
                     MoneyValue = 1000m + n,
                     DateTimeValue = new DateTime(2001, 1, 11, 1, 11, 21, 100),
                     BoolValue = true,
                     GuidValue = Guid.NewGuid(),
                     SmallIntValue = (short)n
                 }
             ));
         Assert.That(result.RowsCopied, Is.EqualTo(10));
         var count = db.GetTable<BulkInsertLowerCaseColumns>().Delete(p => p.ID >= 4000);
         Assert.That(count, Is.EqualTo(10));
     }
 }
示例#17
0
        void BulkCopyTest(string context, BulkCopyType bulkCopyType)
        {
            using (var conn = new DataConnection(context))
            {
                conn.BeginTransaction();

                conn.BulkCopy(new BulkCopyOptions { MaxBatchSize = 50, BulkCopyType = bulkCopyType },
                    Enumerable.Range(0, 100).Select(n =>
                        new AllType
                        {
                            ID = 2000 + n,
                            bigintDataType = 3000 + n,
                            smallintDataType = (short)(4000 + n),
                            decimalDataType = 900000 + n,
                            smalldecimalDataType = 90000 + n,
                            intDataType = 7000 + n,
                            tinyintDataType = (byte)(5000 + n),
                            floatDataType = 7700 + n,
                            realDataType = 7600 + n,

                            dateDataType = DateTime.Now,
                            timeDataType = DateTime.Now - DateTime.Today,
                            seconddateDataType = DateTime.Now,
                            timestampDataType = DateTime.Now,

                            charDataType = 'A',
                            varcharDataType = "AA",
                            textDataType = "text",
                            shorttextDataType = "shorttext",
                            ncharDataType = '\u00fc',
                            nvarcharDataType = "A\u00fcfsdf\u00fc",
                            alphanumDataType = "abcQWE654",
                            binaryDataType = new byte[] { 1 },
                            varbinaryDataType = new byte[] { 1, 2, 3 },
                            blobDataType = new byte[] { 1, 2, 3, 4, 5, 6 },
                            clobDataType = "clobclobclob",
                            nclobDataType = "nclob\u00fcnclob\u00fcnclob\u00fc"
                        }));

                conn.GetTable<AllType>().Delete(p => p.ID >= 2000);
            }
        }
示例#18
0
 protected override void OpenSession()
 {
     DataConnection.DefaultConfiguration = "PerformanceTest";
     _db = new DataConnection("PerformanceTest");
     _table = _db.GetTable<Simplests>();
 }
        public void Dispose()
        {

            Logger.Trace("Disposing lock " + _resource);

            if (!_lockDeleted)
            {
                _lockDeleted = true;
                using (var db = new DataConnection(DatabaseActor.DataProvider, _connection))
                {
                    int nDeleted = db.GetTable<DistributedLock>().Where(dl => dl.Id == _lockId).Delete();
                    if (nDeleted != 1)
                        throw new MySqlDistributedLockException("Lock " + _lockId + " on resource " + _resource +
                                                                " disappeared");

                }
            }

            _connection.Dispose();

        }
示例#20
0
		public void InsertTest4([Values(
			ProviderName.SqlServer, ProviderName.Access, ProviderName.DB2, ProviderName.Firebird, 
			ProviderName.Informix, ProviderName.MySql, ProviderName.Oracle, ProviderName.PostgreSQL,
			ProviderName.SqlCe, ProviderName.SQLite, ProviderName.Sybase)] string configString)
		{
			using (var db = new DataConnection(configString))
			{
				db
					.GetTable<TestTable>()
					.Where(t => t.Name == "Crazy Frog")
					.Into(db.GetTable<TestTable2>())
						.Value(t => t.Name,      t => t.Name + " II")
						.Value(t => t.CreatedOn, t => t.CreatedOn.Value.AddDays(1))
					.Insert();
			}
		}
示例#21
0
		public void InsertOrUpdateTest([Values(
			ProviderName.SqlServer, ProviderName.Access, ProviderName.DB2, ProviderName.Firebird, 
			ProviderName.Informix, ProviderName.MySql, ProviderName.Oracle, ProviderName.PostgreSQL,
			ProviderName.SqlCe, ProviderName.SQLite, ProviderName.Sybase)] string configString)
		{
			using (var db = new DataConnection(configString))
			{
				db.GetTable<TestTable3>()
					.InsertOrUpdate(
						() => new TestTable3
						{
							ID   = 5,
							Name = "Crazy Frog",
						},
						t => new TestTable3
						{
							Name = "Crazy Frog IV",
						});
			}
		}
示例#22
0
        public void UpdateAssociation5([DataContexts(
            ProviderName.Access, ProviderName.DB2, ProviderName.Firebird, ProviderName.Informix, ProviderName.Oracle, ProviderName.PostgreSQL, ProviderName.SqlCe, ProviderName.SQLite,
            ExcludeLinqService=true)] string context)
        {
            using (var db = new DataConnection(context))
            {
                var ids = new[] { 10000, 20000 };

                db.GetTable<Table2>()
                    .Where (x => ids.Contains(x.ParentID))
                    .Select(x => x.Table1)
                    .Distinct()
                    .Set(y => y.BoolValue, y => y.Tables2.All(x => x.Value1))
                    .Update();

                var idx = db.LastQuery.IndexOf("INNER JOIN");

                Assert.That(idx, Is.Not.EqualTo(-1));

                idx = db.LastQuery.IndexOf("INNER JOIN", idx + 1);

                Assert.That(idx, Is.EqualTo(-1));
            }
        }
示例#23
0
        public void ExposeSqlDecimalParameter(string context)
        {
            using (var db = new DataConnection(context))
            {
                var p   = 123.456m;
                var sql = db.GetTable<AllTypes>().Where(t => t.DecimalDataType == p).ToString();

                Console.WriteLine(sql);

                Assert.That(sql, Contains.Substring("(6,3)"));
            }
        }