コード例 #1
0
        public void GetDbProviderFactory_SQLITE()
        {
            string            name    = new SqliteTranslator().ProviderInvariantName;
            DbProviderFactory factory = DbDriveFactories.GetFactory(name);

            Assert.True(factory != null);
        }
コード例 #2
0
ファイル: DbTranslatorBase.cs プロジェクト: fengqinhua/Maple
 public virtual DbProviderFactory GetDbProviderFactory()
 {
     if (dbProviderFactory == null)
     {
         dbProviderFactory = DbDriveFactories.GetFactory(this.ProviderInvariantName);
     }
     return(dbProviderFactory);
 }
コード例 #3
0
ファイル: ILBuilderTest.cs プロジェクト: fengqinhua/Maple
        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;
                }
            });
        }
コード例 #4
0
        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;"));
        }