首页 > 数据库 >Abp vNext+SqlServer+MySqlServer

Abp vNext+SqlServer+MySqlServer

时间:2024-08-18 21:51:06浏览次数:13  
标签:vNext SqlServer options Abp EntityFrameworkCore context MySql Server public

目前项目使用的是 ABP vNext 版本 8.2.0 加上 SQL Server。由于业务需求,我们需要与 MySQL 数据库进行对接,这意味着项目的主要功能将继续使用 SQL Server,而部分特定功能将需要与 MySQL 数据库交互。

步骤1. 在项目“XXX.XXX.EntityFrameworkCore”中安装MySql包

dotnet add package Volo.Abp.EntityFrameworkCore.MySql
dotnet add package Pomelo.EntityFrameworkCore.MySql

步骤 2: 配置连接字符串

 在 appsettings.json 文件中添加 MySQL 的连接字符串

{
  "ConnectionStrings": {
    "Default": "Server=(localdb)\\mssqllocaldb;Database=AbpDb;Trusted_Connection=True;MultipleActiveResultSets=true",
    "MySql": "Server=localhost;Port=3306;Database=mydatabase;Uid=myusername;Pwd=mypassword;"
  },
  ...
}

步骤 3: 创建 DbContext

    public class MySqlDbContext : AbpDbContext<MySqlDbContext>
    {
        public MySqlDbContext(DbContextOptions<MySqlDbContext> options)
            : base(options)
        {

        }

        public DbSet<AppStudent> AppStudents { get; set; }

        protected override void OnModelCreating(ModelBuilder builder)
        {
            base.OnModelCreating(builder);

            builder.Entity<AppStudent>(b =>
            {
                b.ToTable("AppStudent");
                b.ConfigureByConvention();
            });
        }
    }

 

步骤 4: 注册 DbContext

在“XXXX.XXX.EntityFrameworkCore”中找到“XXXXEntityFrameworkCoreModule”

    public override void ConfigureServices(ServiceConfigurationContext context)
    {
        var configuration = context.Services.GetConfiguration();
        context.Services.AddAbpDbContext<TwinsDbContext>(options =>
        {
            /* Remove "includeAllEntities: true" to create
             * default repositories only for aggregate roots */
            options.AddDefaultRepositories(includeAllEntities: true);
        });

        context.Services.AddDbContext<MySqlDbContext>(options =>
        {
            options.UseMySql(
                configuration.GetConnectionString("MySql"),
                ServerVersion.AutoDetect(configuration.GetConnectionString("MySql")));
        });

        Configure<AbpDbContextOptions>(options =>
        {
            /* The main point to change your DBMS.
             * See also TwinsMigrationsDbContextFactory for EF Core tooling. */
            options.UseSqlServer();
        });
    }

 

步骤 5: 使用 DbContext

    public class AppStudent: Entity<int>
    {
        public virtual string Name{ get; set; }
        public virtual int Age{ get; set; }
    }
    public interface IAppStudentRepository : IRepository<AppStudent, int>
    {
        Task<List<AppStudent>> GetByNameAsync(string name);
    }
  public class AppStudentRepository : EfCoreRepository<MySqlDbContext, AppStudent, int>, 
  {
      public AppStudentRepository(IDbContextProvider<MySqlDbContext> dbContextProvider) : base(dbContextProvider)
      {
      }
      public async Task<List<AppStudent>> GetByNameAsync(string name)
      {
          var dbSet = await GetDbSetAsync();
          return dbSet.AsEnumerable().Where(c => c.Name== name).ToList();
      }
  }

 

标签:vNext,SqlServer,options,Abp,EntityFrameworkCore,context,MySql,Server,public
From: https://www.cnblogs.com/wz122889488/p/18366151

相关文章

  • 初始化一个Abpvnext项目
    文章目录一、安装ABPCLI安装更新二、使用CLI创建项目命令解析官网连接三、调整项目结构四、配置统一返回结果1.创建响应码枚举2.创建响应实体3.创建响应实体(泛型)五、配置并使用统一返回结果过滤器1.创建NoWrapperAttribute2.创建ResultWrapperFilter3.在HttpApiHost......
  • ABP默认模板修改默认数据库类型并初始化数据库数据
    我这里以SQLite数据库为例,其他数据库类似。1.下载模板https://aspnetboilerplate.com/ 根据自己的需求选择版本和前端框架并填写项目名称,点击“Createmyproject!”即可下载一个ABP标准模板项目。  解压下载好的压缩包,找到目录:aspnet-core,接下来就可以用VS打开.sln......
  • sqlserver清理数据库日志并写作业定期执行
    清理数据库日志最终sql:USE[master]GOALTERDATABASElsrz_zjwb_wSETRECOVERYSIMPLEWITHNO_WAITGOALTERDATABASElsrz_zjwb_wSETRECOVERYSIMPLE--简单模式GOUSElsrz_zjwb_wGODBCCSHRINKFILE(N'lsrz_zjwb_log',2,TRUNCATEONLY)--日志文件逻辑名称......
  • SQLServer 错误: 8646,在数据库 'msdb',表 1077578877 的索引 ID 1 中找不到索引条目
    一台非生产服务器,磁盘被打满了,刚开始以为只是正常的磁盘使用增长满了,就清理了一部分空间出来,没过一会,就又满了,排查到sqlserver的错误日志文件一直在增 同时查看sqlserver错误日志,大量报错日志:[298]SQLServer错误:8646,在数据库'msdb',表1077578877的索引ID1中找不到索......
  • C#高级:在SQLserver中使用视图和存储过程
    一、视图1.视图是什么,有什么作用?①一个虚拟表②简化查询2.视图和存储过程有什么区别?①视图:用于简化查询和数据展示②存储过程:用于执行一系列SQL语句,包含增删改查等,即业务逻辑得处理。3.建立一个视图,名为PersonBorrowView,SQL已给出: SELECTU.Name,BW.BoTime,BI.Bo......
  • sqlserver修改字段
    SETQUOTED_IDENTIFIERON;SETANSI_NULLSON;GOCREATEPROCEDUREp_AlterColumn@TableNameVARCHAR(50),@ColumnNameVARCHAR(50),@ColumnTypeVARCHAR(50),--ModifyFlag='1000'ColumnType='NULL'表示删除@ColumnIsNullVARCHA......
  • SqlServer 主从复制错误分析--20598
    十年河东,十年河西,莫欺少年穷学无止境,精益求精1、在分发服务器执行如下脚本select*fromMSsubscriber_infoselect*fromMSpublications 2、选择分发数据库-distribution,执行如下脚本 sp_helpsubscriptionerrors'IZQY9C2TQSKGS9ZTEST','DBTEST','DbPiblish'......
  • SQLServer 事务复制订阅节点非活跃状态(inactive)错误的处理:Error in replication::subs
    事务复制中订阅节点非活动( inactive)错误在SQLServer的事务复制模型中,会出现“订阅过期”的错误,相关订阅分发代理Job的典型错误如下:"AgentSQLNYC01-Onvoices-PubInvoicesInvoices-SQLNYC01-1353is retryingafteranerror. 211retriesattempted.Seeagentjobhistoryin......
  • sqlserver跟踪sql导出
     具体操作:打开跟踪窗口,登录到数据库服务器,新增跟踪,配置跟踪属性,确定,业务数据操作,暂停跟踪,导出sql脚本  登录到数据库服务器 新增跟踪,配置跟踪属性      ......
  • sqlserver 使用总结
     1.日期或时间加/减天数/分钟/秒①DATEADD(YEAR/MONTH/DAY/HOUR/MINUTE/SECOND,#int数字,#date/datetime类型) 日期或时间减年/月/日/小时/分钟/秒②DATEDIFF(YEAR/MONTH/DAY/HOUR/MINUTE/SECOND,#date/datetime类型,#date/datetime类型) 两个日期或时间类型相减,取......