Пример #1
0
        private void MockGenerator()
        {
            var optionsMock = new Mock <IOptions <DapperDatabaseOptions> >();
            var options     = new DapperDatabaseOptions
            {
                DefaultConnectionName = "default",
                ConnectionStrings     = new Dictionary <string, string>
                {
                    { "default", helper.ConnectionString }
                }
            };
            var builder = new DapperDataFeatureBuilder(options);

            builder.Conventions(convention =>
            {
                convention
                .AutoGenerateKey <TimeTest>(x => x.Id)
                .Ignore <TimeTest>(x => x.Time)
                .Types(s => s == typeof(TimeTest))
                .IsEntity();
            });
            builder.Build();
            optionsMock.Setup(o => o.Value).Returns(options);
            var loggerFactory = new LoggerFactory();

            loggerFactory.AddDebug(LogLevel.Trace);
            _testContext = new DapperContext(new DapperRuntime(optionsMock.Object,
                                                               new IDapperMetadataProvider[] { new DapperMetadataProviderInstance(), })
                                             , loggerFactory);
            _dapper  = new DapperRepository <DapperTestEntity>(_testContext);
            _dapper1 = new DapperRepository <TimeTest>(_testContext);
        }
Пример #2
0
        /// <summary>
        /// 添加以 Dapper 作为持久化的数据层特性。
        /// </summary>
        /// <param name="builder"></param>
        /// <param name="setup"></param>
        /// <returns></returns>
        public static SchubertServicesBuilder AddDapperDataFeature(this SchubertServicesBuilder builder, Action <DapperDataFeatureBuilder> setup = null)
        {
            DapperDatabaseOptions dbOptions = new DapperDatabaseOptions();

            if (builder.AddedModules.Add(_module))
            {
                //修改dapper的默认映射规则,让其支持下划线列名到C#实体驼峰命名属性
                Dapper.DefaultTypeMap.MatchNamesWithUnderscores = true;

                var configuration = builder.Configuration.GetSection("Schubert:Data") as IConfiguration ?? new ConfigurationBuilder().Build();

                builder.ServiceCollection.Configure <DapperDatabaseOptions>(configuration);

                var schubertDataSetup = new ConfigureFromConfigurationOptions <DapperDatabaseOptions>(configuration);
                schubertDataSetup.Configure(dbOptions);
            }

            DapperDataFeatureBuilder featureBuilder = new DapperDataFeatureBuilder(dbOptions);

            setup?.Invoke(featureBuilder);


            featureBuilder.Build();
            builder.ServiceCollection.Configure(featureBuilder.Configure);

            builder.ServiceCollection.AddSmart(DapperServices.GetServices(dbOptions));
            return(builder);
        }
 /// <summary>
 /// 将 SQLite 作为默认的数据库提供程序。
 /// </summary>
 /// <param name="builder"></param>
 /// <returns></returns>
 public static DapperDataFeatureBuilder AddSQLiteForDefault(this DapperDataFeatureBuilder builder)
 {
     builder.Options(options =>
     {
         options.DefaultDatabaseProvider = typeof(SQLiteDatabaseProvider);
     });
     return(builder);
 }