Volo.Abp.EntityFrameworkCore.MySQL 使用

  • 创建新项目

打开 https://cn.abp.io/Templates ,任意选择一个项目类型,然后创建项目,我这里创建了一个Web Api

 

 

解压项目,还原Nuget,项目目录如下:

 

 

首先我们来查看下整个项目关于数据库方面的引用:

 

 

从图中我们可以看到IdentityServerHostMKM.BookStore.Host 这两个站点有引用,IdentityServerHost是用户中心API,和MKM.BookStore.Host 是我们的业务中心API,这里我们以MKM.BookStore.Host的处理为例来讲解下如何把原有的SqlServer替换为Mysql。

1、在以MKM.BookStore.Host添加Volo.Abp.EntityFrameworkCore.MySQL的引用

2、修改数据库Default的连接字符串为Mysql的数据库连接字符串

1     //SqlServer
2     //"Default" "Server=localhost;Database=BookStoreHost;Trusted_Connection=True;MultipleActiveResultSets=true",
3     
4     //Mysql
5     "Default": "SERVER=192.168.2.15; PORT=3306; DATABASE=BookStoreHost; USER=root; PASSWORD=123456;",
6     
7     // 缓存数据库
8     "SqlServerCache": "Server=localhost;Database=BookStoreCache;Trusted_Connection=True;MultipleActiveResultSets=true"

 

3、DemoAppModule.cs

3.1 、替换引用

添加Volo.Abp.EntityFrameworkCore.MySQL的引用

注释Volo.Abp.EntityFrameworkCore.SqlServer的引用

3.2、替换Module

 1 typeof(AbpEntityFrameworkCoreSqlServerModule)替换为typeof(AbpEntityFrameworkCoreMySQLModule)
 2 
 3     [DependsOn(
 4         typeof(AbpAutofacModule),
 5         typeof(BookStoreApplicationModule),
 6         typeof(BookStoreEntityFrameworkCoreModule),
 7         typeof(BookStoreHttpApiModule),
 8         typeof(AbpPermissionManagementEntityFrameworkCoreModule),
 9         typeof(AbpSettingManagementEntityFrameworkCoreModule),
10         typeof(AbpAuditLoggingEntityFrameworkCoreModule),
11         //typeof(AbpEntityFrameworkCoreSqlServerModule)
12          typeof(AbpEntityFrameworkCoreMySQLModule)
13         )]

 

3.3、 UseSqlServer改为UseMySQL

1  Configure<AbpDbContextOptions>(options =>
2             {
3                 //options.UseSqlServer();
4                 options.UseMySQL();
5             });

 

4、DemoAppDbContextFactory.cs

        public DemoAppDbContext CreateDbContext(string[] args)
        {
            var configuration = BuildConfiguration();

            //var builder = new DbContextOptionsBuilder<DemoAppDbContext>()
            //    .UseSqlServer(configuration.GetConnectionString("Default"));

            var builder = new DbContextOptionsBuilder<DemoAppDbContext>()
                .UseMySQL(configuration.GetConnectionString("Default"));

            return new DemoAppDbContext(builder.Options);
        }

5、迁移&&生成

5.1、删除默认迁移文件

删除Migrations目录以及文件,因为默认的是SqlServer的,我们这里是需要生产Mysql的。

5.2、 生成新的迁移文件

MKM.BookStore.Host设置为启动项目,打开程序包管理控制台并且默认项目选择为MKM.BookStore.Host

执行迁移命令 

PM> add-migration mysql_init

 

 

5.3、更新数据库

PM> update-database -verbose

 

5.4、关闭 TodosController 的 Authorize,运行 MKM.BookStore.Host

    [RemoteService]
    [Area("BookStore")]
    [Route("api/BookStore/todos")]
    //[Authorize]
    public class TodosController : AbpController
    {
        private readonly ITodoAppService _todoAppService;

        public TodosController(ITodoAppService todoAppService)
        {
            _todoAppService = todoAppService;
        }

        [HttpGet]
        [Route("")]
        public Task<PagedResultDto<TodoDto>> GetListAsync()
        {
            return _todoAppService.GetListAsync();
        }
    }
}

  

 

 

github 地址:https://github.com/Jesn/MKM.BookStore.git

转载于:https://www.cnblogs.com/jesn/p/10268913.html

ABP框架从4.0版本升级5.0版本, 应用程序构建编译成功完成, 但在运行时报错,如何解决? 完整报错日志如下: [19:04:52 FTL] Host terminated unexpectedly! Volo.Abp.AbpInitializationException: An error occurred during ConfigureServices phase of the module TeamWork.EntityFrameworkCore.TeamWorkEntityFrameworkCoreModule, TeamWork.EntityFrameworkCore, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null. See the inner exception for details. ---> System.TypeLoadException: Method 'GetListAsync' in type 'Volo.Abp.Domain.Repositories.EntityFrameworkCore.EfCoreRepository`2' from assembly 'Volo.Abp.EntityFrameworkCore, Version=50.0.7.0, Culture=neutral, PublicKeyToken=null' does not have an implementation. at Volo.Abp.EntityFrameworkCore.DependencyInjection.EfCoreRepositoryRegistrar.GetRepositoryType(Type dbContextType, Type entityType, Type primaryKeyType) at Volo.Abp.Domain.Repositories.RepositoryRegistrarBase`1.GetDefaultRepositoryImplementationType(Type entityType) at Volo.Abp.Domain.Repositories.RepositoryRegistrarBase`1.RegisterDefaultRepository(Type entityType) at Volo.Abp.Domain.Repositories.RepositoryRegistrarBase`1.RegisterDefaultRepositories() at Volo.Abp.Domain.Repositories.RepositoryRegistrarBase`1.AddRepositories() at Microsoft.Extensions.DependencyInjection.AbpEfCoreServiceCollectionExtensions.AddAbpDbContext[TDbContext](IServiceCollection services, Action`1 optionsBuilder) at TeamWork.EntityFrameworkCore.TeamWorkEntityFrameworkCoreModule.ConfigureServices(ServiceConfigurationContext context) in D:\gitsrc\NewBusinessColl\teamwork-git\src\TeamWork.EntityFrameworkCore\TeamWorkEntityFrameworkCoreModule.cs:line 24 at Volo.Abp.AbpApplicationBase.ConfigureServices() --- End of inner exception stack trace --- at Volo.Abp.AbpApplicationBase.ConfigureServices() at Volo.Abp.AbpApplicationBase..ctor(Type startupModuleType, IServiceCollection services, Action`1 optionsAction) at Volo.Abp.AbpApplicationWithExternalServiceProvider..ctor(Type startupModuleType, IServiceCollection services, Action`1 optionsAction) at Volo.Abp.AbpApplicationFactory.Create(Type startupModuleType, IServiceCollection services, Action`1 optionsAction) at Volo.Abp.AbpApplicationFactory.Create[TStartupModule](IServiceCollection services, Action`1 optionsAction) at Microsoft.Extensions.DependencyInjection.ServiceCollectionApplicationExtensions.AddApplication[TStartupModule](IServiceCollection services, Action`1 optionsAction) at TeamWork.HttpApi.Host.Startup.ConfigureServices(IServiceCollection services) in D:\gitsrc\NewBusinessColl\teamwork-git\src\TeamWork.Host\Startup.cs:line 17 at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor, Boolean wrapExceptions) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at Microsoft.AspNetCore.Hosting.ConfigureServicesBuilder.InvokeCore(Object instance, IServiceCollection services) at Microsoft.AspNetCore.Hosting.ConfigureServicesBuilder.<>c__DisplayClass9_0.<Invoke>g__Startup|0(IServiceCollection serviceCollection) at Microsoft.AspNetCore.Hosting.ConfigureServicesBuilder.Invoke(Object instance, IServiceCollection services) at Microsoft.AspNetCore.Hosting.ConfigureServicesBuilder.<>c__DisplayClass8_0.<Build>b__0(IServiceCollection services) at Microsoft.AspNetCore.Hosting.GenericWebHostBuilder.UseStartup(Type startupType, HostBuilderContext context, IServiceCollection services, Object instance) at Microsoft.AspNetCore.Hosting.GenericWebHostBuilder.<>c__DisplayClass13_0.<UseStartup>b__0(HostBuilderContext context, IServiceCollection services) at Microsoft.Extensions.Hosting.HostBuilder.CreateServiceProvider() at Microsoft.Extensions.Hosting.HostBuilder.Build() at TeamWork.HttpApi.Host.Program.Main(String[] args) in D:\gitsrc\NewBusinessColl\teamwork-git\src\TeamWork.Host\Program.cs:line 36
最新发布
06-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值