public void Test([DataSources] string context) { ResetPersonIdentity(context); MappingSchema.Default.SetConverter <Dictionary <string, string>?, string?>(obj => obj == null ? null : obj.Keys.FirstOrDefault()); MappingSchema.Default.SetConverter <Dictionary <string, string>?, DataParameter?>(obj => obj == null ? null : new DataParameter { Value = obj.Keys.FirstOrDefault(), DataType = DataType.NVarChar }); MappingSchema.Default.SetConverter <string?, Dictionary <string, string>?>(txt => txt == null ? null : new Dictionary <string, string> { { txt, txt } }); using var db = GetDataContext(context); using var _ = new RestoreBaseTables(db); var person = new Person { FirstName = new Dictionary <string, string> { { "123", "123" } }, LastName = "456", MiddleName = "789", Gender = "M", }; int id; id = Convert.ToInt32(db.InsertWithIdentity(person)); var p1 = db.GetTable <Person>().First(t => t.PersonID == id); var p2 = db.GetTable <PurePerson>().First(t => t.PersonID == id); Assert.That(p1.FirstName.Keys.First(), Is.EqualTo("123")); Assert.That(p2.FirstName, Is.EqualTo("123")); }
public void TestEnumString(string context, Action <MappingSchema> initMappingSchema) { ResetPersonIdentity(context); var ms = new MappingSchema(); ms.SetConverter <Dictionary <string, string>?, string?>(obj => obj == null ? null : obj.Keys.FirstOrDefault()); ms.SetConverter <Dictionary <string, string>?, DataParameter?>(obj => obj == null ? null : new DataParameter { Value = obj.Keys.FirstOrDefault(), DataType = DataType.NVarChar }); ms.SetConverter <string?, Dictionary <string, string>?>(txt => txt == null ? null : new Dictionary <string, string> { { txt, txt } }); initMappingSchema(ms); using var db = GetDataContext(context, ms); using var _ = new RestoreBaseTables(db); var person = new Person2() { FirstName = new Dictionary <string, string> { { "123", "123" } }, LastName = "456", MiddleName = "789", Gender = Gender.M }; int id; id = Convert.ToInt32(db.InsertWithIdentity(person)); var p = db.GetTable <PurePerson>().First(t => t.PersonID == id); Assert.AreEqual(Gender.M.ToString(), p.Gender); Assert.AreEqual("123", p.FirstName); }
public void UseParametersTest([DataSources(false)] string context) { using var db = new TestDataConnection(context); using var _ = new RestoreBaseTables(db); using var tr = db.BeginTransaction(); var options = new BulkCopyOptions() { UseParameters = true, MaxBatchSize = 50, BulkCopyType = BulkCopyType.MultipleRows }; var start = 111001; var rowsToInsert = Enumerable.Range(start, 149) .Select(r => new Parent() { ParentID = r, Value1 = r - start }).ToList(); db.Parent.BulkCopy(options, rowsToInsert); Assert.AreEqual(rowsToInsert.Count, db.Parent.Where(r => r.ParentID >= rowsToInsert[0].ParentID && r.ParentID <= rowsToInsert.Last().ParentID).Count()); }