EF输出SQL语句

引入Microsoft.Extensions.Logging.Debug包,DbContext

public class MySqlDbContext : Microsoft.EntityFrameworkCore.DbContext
{
    public static readonly LoggerFactory LoggerFactory =
           new LoggerFactory(new[] { new DebugLoggerProvider() });

    public MySqlDbContext(DbContextOptions<MySqlDbContext> options) : base(options) { }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        //注入Sql链接字符串
        //optionsBuilder.UseMySql(@"");            
        base.OnConfiguring(optionsBuilder);
        optionsBuilder.UseLoggerFactory(LoggerFactory);
    }

    public MySqlDbContext()
    {
        //配置数据库链接,即可在其他地方用 new MySqlDbContext() 使用EF上下文
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        #region 用户-角色   角色-菜单  部门-用户 的多对多关系
        modelBuilder.Entity<DeptUser>().HasKey(k => new { k.DeptId, k.UserId });
        modelBuilder.Entity<RoleMenu>().HasKey(k => new { k.MenuId, k.RoleId });
        modelBuilder.Entity<UserRole>().HasKey(k => new { k.RoleId, k.UserId });
        #endregion

        base.OnModelCreating(modelBuilder);
    }

    #region 测试的 
    public virtual DbSet<Models.TestTableA> TestTableA { get; set; }
    public virtual DbSet<Models.TestTableB> TestTableB { get; set; }
    #endregion

}

 

posted @ 2025-06-16 15:42  杜子烟  阅读(20)  评论(0)    收藏  举报