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);
        }
示例#4
0
        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));
        }