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; } }); }
public DatabaseFixture() { //设置SQL默认设置 DatabaseCommon.DbSqlNeedLog = false; //设置数据库驱动 DbDriveFactories.SetFactory <System.Data.SqlClient.SqlClientFactory>(new Sql2000Translator().ProviderInvariantName); DbDriveFactories.SetFactory <MySql.Data.MySqlClient.MySqlClientFactory>(new MySQLTranslator().ProviderInvariantName); DbDriveFactories.SetFactory <System.Data.SQLite.SQLiteFactory>(new SqliteTranslator().ProviderInvariantName); //设置实体映射 EntityConfigurationFactory.SetConfiguration(typeof(User), typeof(UserEntityConfiguration)); EntityConfigurationFactory.SetConfiguration(typeof(User_Role), typeof(User_RoleEntityConfiguration)); EntityConfigurationFactory.SetConfiguration(typeof(Role), typeof(RoleEntityConfiguration)); //初始化Engine var engine = new OnlyIocEngine((builder) => { //InstancePerDependency 瞬态 //SingleInstance 单例 //InstancePerLifetimeScope 基于线程或者请求的单例 //InstancePerRequest 每个HTTP请求单例 //数据库连接配置容器 (单例) builder.RegisterType <DefaultDataSettingContainer>().As <IDataSettingContainer>().SingleInstance(); //Data持久层相关 (瞬态) builder.RegisterType <SimpleDataProviderFactory>().Named <IDataProviderFactory>("SimpleDataProviderFactory").InstancePerDependency(); builder.RegisterType <UnitOfWorkDataProviderFactory>().As <IDataProviderFactory>().InstancePerDependency(); //UOW工作单元相关 (瞬态) builder.RegisterType <AsyncLocalCurrentUnitOfWorkProvider>().As <ICurrentUnitOfWorkProvider>().InstancePerDependency(); builder.RegisterType <UnitOfWorkManager>().As <IUnitOfWorkManager>().InstancePerDependency(); builder.RegisterType <MapleUnitOfWork>().As <IUnitOfWork>().InstancePerDependency(); //Repository仓储 (基于线程或者请求的单例) //builder.RegisterGeneric(typeof(MapleRepositoryBase<>)).As(typeof(IRepository<>)).InstancePerLifetimeScope(); builder.RegisterType <UserRepository>().As <IRepository <User> >().InstancePerLifetimeScope(); //builder.RegisterType<UserRepository>().As<IRepository<User>>() // .WithParameter(ResolvedParameter.ForNamed<IDataProviderFactory>("SimpleDataProviderFactory")) // .InstancePerLifetimeScope(); builder.RegisterType <RoleRepository>().As <IRepository <Role> >().InstancePerLifetimeScope(); }); EngineContext.Replace(engine); EngineContext.Current.Resolve <IDataSettingContainer>().AddOrUpdate(new DataSetting(DataSetting.DefalutDataSettingName, DataSouceType.MySQL, "Server=127.0.0.1;port=3306;Database=mapleleaf;Uid=root;Pwd=root;charset=utf8;SslMode=none;")); }