Esempio n. 1
0
        static void DataReaderToEntity()
        {
            //创建方法
            toEntityMethod = typeBuilder.DefineMethod("ToEntity", MethodAttributes.Public, typeof(object), new Type[] { typeof(IDataReader) });
            ILGenerator il = toEntityMethod.GetILGenerator();

            DbDriveFactories.SetFactory <MySql.Data.MySqlClient.MySqlClientFactory>(new MySQLTranslator().ProviderInvariantName);

            EntityConfigurationFactory.SetConfiguration(typeof(UserIL), typeof(UserEntityConfigurationIL));
            IEntityMapper entityMapper = EntityMapperFactory.Instance.GetEntityMapper(typeof(UserIL));

            IDataProviderFactory DataProviderFactory = new DataProviderFactory();

            DataProviderFactory.AddDataSettings(getDefaultDataSetting());

            IDataProvider dataProvider = DataProviderFactory.CreateProvider("test");
            string        sql          = "SELECT Id,USERNAME,Age,Height,Six,ExtensionData,OrgId,TenantId,Address_CityId,Address_Street,ADDRESS_NUM,IsDeleted,DeleterUserId,DeletionTime,LastModificationTime,LastModifierUserId,CreationTime,CreatorUserId FROM TEST_USER WHERE Id = 13873372135800832 ORDER BY Id ASC";

            dataProvider.ExecuteReader(new Core.Data.SqlStatement(CommandType.Text, sql), (reader) =>
            {
                while (reader.Read())
                {
                    UserIL User = (UserIL)ToEntity(reader);
                    //Maple.Core.Reflection.TypeDeserializerEmit.CreateDataReaderDeserializer2(entityMapper, reader);

                    Maple.Core.Reflection.TypeDeserializerEmit.BuildFunction(entityMapper, reader, il);
                    try
                    {
                        UserIL obj = (UserIL)Maple.Core.Reflection.TypeDeserializerEmit.CreateDataReaderDeserializer(entityMapper, reader)(reader);
                    }
                    catch
                    {
                    }


                    //DataReaderDeserializer deserializer = entityMapper.GetDataReaderDeserializer(reader);
                    //obj = (User)deserializer(reader);


                    break;
                }
            });
        }