public void Upsert_IDefaultEntity_NoMerge() { var tableName = "table_c"; var firstEntity = new EntityA() { Data = new byte[512], DateTime = DateTime.Now, DateTimeOffset = DateTimeOffset.Now, Integer = int.MaxValue, NullableDateTime = DateTime.Now, NullableInteger = int.MaxValue, String = new string('S', 120), Varchar = new string('S', 50) }; provider.CreateTable <EntityA>(tableName); var id = provider.Insert(tableName, firstEntity); var expected = new EntityA() { Id = id, Data = new byte[12], DateTime = DateTime.Today, DateTimeOffset = DateTime.Today, Integer = 0, NullableDateTime = null, NullableInteger = 123, String = null, Varchar = "Test" }; var id2 = provider.Insert(tableName, expected, upsert: true, merge: false); Assert.AreEqual(id, id2); var actual = provider.Query <EntityA>($"SELECT * FROM {provider.ResolveTableName("table_c")} WHERE \"Id\" = @0", expected.Id) .FirstOrDefault(); Assert.IsNotNull(actual); Assert.AreEqual(expected.Type, actual.Type); Assert.IsTrue(expected.DateTime.Subtract(actual.DateTime) < TimeSpan.FromMilliseconds(1)); Assert.IsFalse(actual.NullableDateTime.HasValue); Assert.IsFalse(expected.NullableDateTime.HasValue); Assert.IsTrue(expected.DateTimeOffset.Subtract(actual.DateTimeOffset) < TimeSpan.FromMilliseconds(1)); Assert.AreEqual(expected.DateTimeOffset.Offset, actual.DateTimeOffset.Offset); Assert.AreEqual(expected.Integer, actual.Integer); Assert.AreEqual(expected.NullableInteger, actual.NullableInteger); Assert.AreEqual(expected.String, actual.String); Assert.AreEqual(expected.Varchar, actual.Varchar); for (var i = 0; i < expected.Data.Length; i++) { Assert.AreEqual(expected.Data[i], actual.Data[i]); } }
public void Update_IDefaultEntity_Merge() { var tableName = "table_x"; var firstEntity = new EntityA() { Data = new byte[512], NullableDateTime = DateTime.Today, NullableInteger = int.MaxValue, String = new string('S', 120), Varchar = new string('S', 50) }; provider.CreateTable <EntityA>(tableName); var id = provider.Insert(tableName, firstEntity); var secondEntity = firstEntity.MemberwiseClone() as EntityA; Assert.IsNotNull(secondEntity); secondEntity.Data = null; secondEntity.DateTime = DateTime.Today; secondEntity.DateTimeOffset = new DateTimeOffset(DateTime.Today); secondEntity.NullableDateTime = null; secondEntity.NullableInteger = null; secondEntity.String = null; var affected = provider.Update(tableName, secondEntity, true); Assert.AreEqual(1, affected); var actual = provider.Query <EntityA>($"SELECT * FROM {provider.ResolveTableName(tableName)} WHERE \"Id\" = @0", firstEntity.Id) .FirstOrDefault(); Assert.AreEqual(firstEntity.Data, actual.Data); Assert.IsTrue(secondEntity.DateTime.Equals(actual.DateTime)); Assert.IsTrue(secondEntity.DateTimeOffset.Equals(actual.DateTimeOffset)); Assert.AreEqual(firstEntity.NullableDateTime, actual.NullableDateTime); Assert.AreEqual(firstEntity.NullableInteger, actual.NullableInteger); Assert.AreEqual(firstEntity.String, actual.String); Assert.AreEqual(firstEntity.Varchar, actual.Varchar); }
public void Insert_IDefaultEntity() { var tableName = "table_c"; var entity = new EntityA() { Data = new byte[512], DateTime = DateTime.Now, DateTimeOffset = DateTimeOffset.Now, Integer = int.MaxValue, NullableDateTime = DateTime.Now, NullableInteger = int.MaxValue, String = new string('S', 120), Varchar = new string('S', 50) }; provider.CreateTable <EntityA>(tableName); var id = provider.Insert(tableName, entity); Assert.IsTrue(id > 0); Assert.AreEqual(id, entity.Id); }
public void Update_IDefaultEntity_NotExisting() { var tableName = "table_x"; var firstEntity = new EntityA() { Data = new byte[512], NullableDateTime = DateTime.Today, NullableInteger = int.MaxValue, String = new string('S', 120), Varchar = new string('S', 50) }; provider.CreateTable <EntityA>(tableName); var id = provider.Insert(tableName, firstEntity); provider.Execute($"DELETE FROM {provider.ResolveTableName(tableName)} WHERE \"Id\" = @0", id); var secondEntity = firstEntity.MemberwiseClone() as EntityA; var affected = provider.Update(tableName, secondEntity, true); Assert.AreEqual(0, affected); }
public void Upsert_IDefaultEntity_Merge() { var tableName = "table_c"; var firstEntity = new EntityA() { Data = new byte[512], NullableDateTime = DateTime.Now, NullableInteger = int.MaxValue, String = new string('S', 120), Varchar = new string('S', 50) }; provider.CreateTable <EntityA>(tableName); var id = provider.Insert(tableName, firstEntity); var expected = new EntityA() { Id = id, Data = null, NullableDateTime = null, NullableInteger = null, String = null, Varchar = null }; provider.Insert(tableName, expected, upsert: true, merge: true); // merge = true var actual = provider.Query <EntityA>($"SELECT * FROM {provider.ResolveTableName("table_c")} WHERE \"Id\" = @0", expected.Id) .FirstOrDefault(); Assert.AreEqual(firstEntity.Type, actual.Type); Assert.IsTrue(firstEntity.DateTime.Subtract(actual.DateTime) < TimeSpan.FromMilliseconds(1)); Assert.IsTrue(actual.NullableDateTime.HasValue); Assert.IsTrue(firstEntity.NullableDateTime.HasValue); Assert.AreEqual(firstEntity.NullableInteger, actual.NullableInteger); Assert.AreEqual(firstEntity.String, actual.String); Assert.AreEqual(firstEntity.Varchar, actual.Varchar); }