public void EntityProcessor_Property_Get_Method_Should_Set_and_Get_nullable_value_types() { DateTime dateValue = DateTime.Now; DateTime verifyDate = DateTime.Now.AddDays(2); long val = 8; var accessor = new EntityAccessor(typeof(FakeEntityAccessor3)); accessor.Load(new DynamicEntityMap(typeof(FakeEntityAccessor3))); FakeEntityAccessor3 fake = new FakeEntityAccessor3() { Prop = "Hello", Prop4 = 5 }; var nullableProp = accessor.Properties["Prop4"]; Assert.AreEqual(5, nullableProp.GetMethod(fake)); nullableProp.SetMethod(fake, val); Assert.AreEqual(val, fake.Prop4); //now let's handle null values nullableProp.SetMethod(fake, null); Assert.IsNull(fake.Prop4); Assert.IsNull(nullableProp.GetMethod(fake)); }
public void EntityProcessor_Property_Get_Method_Should_Set_and_Get_value_types() { DateTime dateValue = DateTime.Now; DateTime verifyDate = DateTime.Now.AddDays(2); var accessor = new EntityAccessor(typeof(FakeEntityAccessor3)); accessor.Load(new DynamicEntityMap(typeof(FakeEntityAccessor3))); FakeEntityAccessor3 fake = new FakeEntityAccessor3() { Prop = "Hello", Prop2 = dateValue, Prop3 = 5 }; var dateProp = accessor.Properties["Prop2"]; Assert.AreEqual(dateValue, dateProp.GetMethod(fake)); dateProp.SetMethod(fake, verifyDate); Assert.AreEqual(verifyDate, fake.Prop2); var intProp = accessor.Properties["Prop3"]; Assert.AreEqual(5, intProp.GetMethod(fake)); intProp.SetMethod(fake, 8); Assert.AreEqual(8, fake.Prop3); }
public void LoadedEntity_should_provide_getter_and_setter_methods() { var accessor = new EntityAccessor(typeof(FakeEntityAccessor3)); accessor.Load(new DynamicEntityMap(typeof(FakeEntityAccessor3))); FakeEntityAccessor3 fake = new FakeEntityAccessor3() { Prop = "Hello" }; var pAccProp = accessor.Properties["Prop"]; Assert.AreEqual("Hello", pAccProp.GetMethod(fake)); var pAccProp1 = accessor.Properties["Prop1"]; pAccProp1.SetMethod(fake, "try me"); Assert.AreEqual("try me", fake.Prop1); }
private Func <DbDataReader, IEntityMap, TableQueryMap, IList <TEntity> > CreateSerializerMethod <TEntity>(IEntityMap mapModel) { Func <DbDataReader, IEntityMap, TableQueryMap, IList <TEntity> > func = (dbReader, model, queryMap) => { var list = new List <TEntity>(); Type type = typeof(TEntity); EntityAccessor entityAccessor; //Dictionary<string, int> columns = null; if (model is EntityMap) { var entityMap = (EntityMap)model; if (queryMap == null) { int iteration = 0; int recursion = 0; queryMap = new TableQueryMap(entityMap.TableName, ref recursion, ref iteration) { Prefix = entityMap.TableAlias }; } LoadColumnIndexes(dbReader, queryMap); //TODO: should we cache everything? if (entityMap is DynamicEntityMap) { entityAccessor = new EntityAccessor(type); entityAccessor.Load(entityMap); } else { entityAccessor = entityAccessorStore.GetEntityAccessor(type, entityMap); } while (dbReader.Read()) { var instanceEntity = CreateNewInstance(type, entityMap); SerializeSingle(instanceEntity, type, entityMap, entityAccessor, queryMap, dbReader); list.Add((TEntity)instanceEntity); } } else if (model is ComplexType) { var complexType = (ComplexType)model; if (queryMap == null) { //queryMap = new TableQueryMap(complexType.FullName); } throw new NotSupportedException("Serializing of complex types not yet supported."); //LoadColumnIndexes(dbReader, queryMap); // entityAccessor = entityAccessorStore.GetEntityAccessor(type, complexType); //while (dbReader.Read()) //{ // var instanceEntity = Activator.CreateInstance(type); // SerializeSingle(instanceEntity, type, complexType, entityAccessor, queryMap, dbReader); // list.Add((TEntity)instanceEntity); //} } return(list); }; return(func); }
public void Load_with_null_entityMap_should_throw() { var accessor = new EntityAccessor(typeof(Zoo)); Assert.Throws <ArgumentNullException>(() => accessor.Load(null)); }