示例#1
0
        public void datetime_tests__can_use_datetime2()
        {
            var dbFactory = new OrmLiteConnectionFactory(base.ConnectionString, SqlServerOrmLiteDialectProvider.Instance);

            //change to datetime2 - check for higher range and precision
            //SqlServerOrmLiteDialectProvider.Instance.UseDatetime2(true);
            SqlServerDialect.Provider.RegisterConverter <DateTime>(new SqlServerDateTime2Converter());

            using (var conn = dbFactory.OpenDbConnection()) {
                var test_object_ValidForDatetime2 = Datetime2Test.get_test_object_ValidForDatetime2();

                conn.CreateTable <Datetime2Test>(true);

                //normal insert
                var insertedId = conn.Insert(test_object_ValidForDatetime2, selectIdentity: true);

                //read back, and verify precision
                var fromDb = conn.SingleById <Datetime2Test>(insertedId);
                Assert.AreEqual(test_object_ValidForDatetime2.ToVerifyPrecision, fromDb.ToVerifyPrecision);

                //update
                fromDb.ToVerifyPrecision = test_object_ValidForDatetime2.ToVerifyPrecision.Value.AddYears(1);
                conn.Update(fromDb);
                var fromDb2 = conn.SingleById <Datetime2Test>(insertedId);
                Assert.AreEqual(test_object_ValidForDatetime2.ToVerifyPrecision.Value.AddYears(1), fromDb2.ToVerifyPrecision);

                //check InsertParam
                conn.Insert(test_object_ValidForDatetime2);

                //check select on datetime2 value
                var result = conn.Select <Datetime2Test>(t => t.ToVerifyPrecision == test_object_ValidForDatetime2.ToVerifyPrecision);
                Assert.AreEqual(result.Single().ToVerifyPrecision, test_object_ValidForDatetime2.ToVerifyPrecision);
            }
        }
示例#2
0
        public void datetime_tests__check_default_behaviour()
        {
            using (var conn = dbFactory.OpenDbConnection()) {
                var test_object_ValidForDatetime2      = Datetime2Test.get_test_object_ValidForDatetime2();
                var test_object_ValidForNormalDatetime = Datetime2Test.get_test_object_ValidForNormalDatetime();

                conn.CreateTable <Datetime2Test>(true);

                // normal insert
                var insertedId = conn.Insert(test_object_ValidForNormalDatetime, selectIdentity: true);

                // insert works, but can't regular datetime's precision is not great enough.
                var fromDb = conn.SingleById <Datetime2Test>(insertedId);
                Assert.AreNotEqual(test_object_ValidForNormalDatetime.ToVerifyPrecision, fromDb.ToVerifyPrecision);

                var thrown = Assert.Throws <SqlTypeException>(() => {
                    conn.Insert(test_object_ValidForDatetime2);
                });
                Assert.That(thrown.Message.Contains("SqlDateTime overflow"));


                // check InsertParam
                conn.Insert(test_object_ValidForNormalDatetime);
                // InsertParam fails differently:
                var insertParamException = Assert.Throws <System.Data.SqlTypes.SqlTypeException>(() => {
                    conn.Insert(test_object_ValidForDatetime2);
                });
                Assert.That(insertParamException.Message.Contains("SqlDateTime overflow"));
            }
        }
示例#3
0
        public void datetime_tests__can_use_datetime2()
        {
            using (var conn = dbFactory.OpenDbConnection("dt2")) {
                var test_object_ValidForDatetime2 = Datetime2Test.get_test_object_ValidForDatetime2();

                conn.CreateTable <Datetime2Test>(true);

                //normal insert
                var insertedId = conn.Insert(test_object_ValidForDatetime2, selectIdentity: true);

                //read back, and verify precision
                var fromDb = conn.SingleById <Datetime2Test>(insertedId);
                Assert.AreEqual(test_object_ValidForDatetime2.ToVerifyPrecision, fromDb.ToVerifyPrecision);

                //update
                fromDb.ToVerifyPrecision = test_object_ValidForDatetime2.ToVerifyPrecision.Value.AddYears(1);
                conn.Update(fromDb);
                var fromDb2 = conn.SingleById <Datetime2Test>(insertedId);
                Assert.AreEqual(test_object_ValidForDatetime2.ToVerifyPrecision.Value.AddYears(1), fromDb2.ToVerifyPrecision);

                //check InsertParam
                conn.Insert(test_object_ValidForDatetime2);

                //check select on datetime2 value
                var result = conn.Select <Datetime2Test>(t => t.ToVerifyPrecision == test_object_ValidForDatetime2.ToVerifyPrecision);
                Assert.AreEqual(result.Single().ToVerifyPrecision, test_object_ValidForDatetime2.ToVerifyPrecision);
            }
        }
示例#4
0
        public void Can_Select_DateTime()
        {
            using (var db = dbFactory.OpenDbConnection("dt2"))
            {
                db.DropAndCreateTable <Datetime2Test>();
                db.Insert(Datetime2Test.get_test_object_ValidForNormalDatetime());

                var now = DateTime.UtcNow;
                var q   = db.From <Datetime2Test>()
                          .Select(x => new { SomeDateTime = now });

                var result = db.Select(q)[0];

                Assert.That(result.SomeDateTime, Is.EqualTo(now).Within(TimeSpan.FromSeconds(1)));
            }
        }
示例#5
0
        public void Can_Select_DateTime2()
        {
            using (var db = dbFactory.OpenDbConnection("dt2"))
            {
                db.DropAndCreateTable <Datetime2Test>();
                db.Insert(Datetime2Test.get_test_object_ValidForDatetime2());

                var now = DateTime.Parse("2019-03-12 09:10:48.3477082");
                var q   = db.From <Datetime2Test>()
                          .Select(x => new { SomeDateTime = now });

                var result = db.Select(q)[0];

                Assert.That(result.SomeDateTime, Is.EqualTo(now));
            }
        }
示例#6
0
        public void Can_Select_DateTime()
        {
            var dbFactory = new OrmLiteConnectionFactory(base.ConnectionString, SqlServerOrmLiteDialectProvider.Instance);

            using (var db = dbFactory.OpenDbConnection())
            {
                db.DropAndCreateTable <Datetime2Test>();
                db.Insert(Datetime2Test.get_test_object_ValidForNormalDatetime());

                var now = DateTime.UtcNow;
                var q   = db.From <Datetime2Test>()
                          .Select(x => new { SomeDateTime = now });

                var result = db.Select(q)[0];

                Assert.That(result.SomeDateTime, Is.EqualTo(now).Within(TimeSpan.FromSeconds(1)));
            }
        }
示例#7
0
        public void datetime_tests__check_default_behaviour()
        {
            var dbFactory = new OrmLiteConnectionFactory(base.ConnectionString, SqlServerOrmLiteDialectProvider.Instance);

            //default behaviour: normal datetime can't hold DateTime values of year 1.
            //(SqlServerOrmLiteDialectProvider.Instance as SqlServerOrmLiteDialectProvider).UseDatetime2(false);
            SqlServerDialect.Provider.RegisterConverter <DateTime>(new SqlServerDateTimeConverter());

            using (var conn = dbFactory.OpenDbConnection()) {
                var test_object_ValidForDatetime2      = Datetime2Test.get_test_object_ValidForDatetime2();
                var test_object_ValidForNormalDatetime = Datetime2Test.get_test_object_ValidForNormalDatetime();

                conn.CreateTable <Datetime2Test>(true);

                //normal insert
                var insertedId = conn.Insert(test_object_ValidForNormalDatetime, selectIdentity: true);

                //insert works, but can't regular datetime's precision is not great enough.
                var fromDb = conn.SingleById <Datetime2Test>(insertedId);
                Assert.AreNotEqual(test_object_ValidForNormalDatetime.ToVerifyPrecision, fromDb.ToVerifyPrecision);

                var thrown = Assert.Throws <SqlTypeException>(() => {
                    conn.Insert(test_object_ValidForDatetime2);
                });
                Assert.That(thrown.Message.Contains("SqlDateTime overflow"));


                //check InsertParam
                conn.Insert(test_object_ValidForNormalDatetime);
                //InsertParam fails differently:
                var insertParamException = Assert.Throws <System.Data.SqlTypes.SqlTypeException>(() => {
                    conn.Insert(test_object_ValidForDatetime2);
                });
                Assert.That(insertParamException.Message.Contains("SqlDateTime overflow"));
            }
        }