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); } }
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")); } }
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); } }
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))); } }
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)); } }
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))); } }
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")); } }