/// <summary> /// 获取当前表的所有列和类型 /// </summary> /// <param name="context"></param> /// <param name="tableName"></param> /// <returns></returns> public static DataTable GetTableColumns(this IDbContextCore context, string tableName) { if (context == null) { throw new ArgumentNullException(nameof(context)); } var db = context.GetDatabase(); var sql = string.Empty; if (db.IsSqlServer()) { sql = "SELECT a.name as ColName," + "CONVERT(bit,(case when COLUMNPROPERTY(a.id,a.name,'IsIdentity')=1 then 1 else 0 end)) as IsIdentity, " + "CONVERT(bit,(case when (SELECT count(*) FROM sysobjects WHERE (name in (SELECT name FROM sysindexes WHERE (id = a.id) AND (indid in (SELECT indid FROM sysindexkeys WHERE (id = a.id) AND (colid in (SELECT colid FROM syscolumns WHERE (id = a.id) AND (name = a.name))))))) AND (xtype = 'PK'))>0 then 1 else 0 end)) as IsPrimaryKey," + "b.name as ColumnType," + "COLUMNPROPERTY(a.id,a.name,'PRECISION') as ColumnLength," + "CONVERT(bit,(case when a.isnullable=1 then 1 else 0 end)) as IsNullable, " + "isnull(e.text,'') as DefaultValue," + "isnull(g.[value], ' ') AS Comments " + "FROM syscolumns a left join systypes b on a.xtype=b.xusertype inner join sysobjects d on a.id=d.id and d.xtype='U' and d.name<>'dtproperties' left join syscomments e on a.cdefault=e.id left join sys.extended_properties g on a.id=g.major_id AND a.colid=g.minor_id left join sys.extended_properties f on d.id=f.class and f.minor_id=0 " + $"where b.name is not null and d.name='{tableName}' order by a.id,a.colorder"; } else { throw new NotImplementedException("This method does not support current database yet."); } return(context.GetDataTable(sql)); }
private static IEnumerable <T> Execute <T>(this IDbContextCore context, string sql, CommandType type, DbParameter[] sqlParams) where T : new() { var db = context.GetDatabase(); var connection = db.GetDbConnection(); var cmd = connection.CreateCommand(); if (connection.State == ConnectionState.Closed) { connection.Open(); } cmd.CommandText = sql; cmd.CommandType = type; if (sqlParams != null) { cmd.Parameters.AddRange(sqlParams); } IEnumerable <T> result; using (var reader = cmd.ExecuteReader()) { result = EntityMapper.MapToEntities <T>(reader); } connection.Close(); return(result); }
internal void GenerateAllCodesFromDatabase(IDbContextCore dbContext, bool ifExsitedCovered = false, Func <DbTable, bool> selector = null) { var tables = dbContext.GetCurrentDatabaseTableList(); if (tables != null && tables.Any()) { if (selector == null) { selector = m => true; } tables = tables.Where(selector).ToList(); foreach (var table in tables) { if (table.Columns.Any(c => c.IsPrimaryKey)) { var pkTypeName = table.Columns.First(m => m.IsPrimaryKey).CSharpType; GenerateEntity(table, ifExsitedCovered); GenerateIRepository(table.TableName.ToPascalCase(), pkTypeName, ifExsitedCovered); GenerateRepository(table.TableName.ToPascalCase(), pkTypeName, ifExsitedCovered); GenerateIService(table.TableName.ToPascalCase(), pkTypeName, ifExsitedCovered); GenerateService(table.TableName.ToPascalCase(), pkTypeName, ifExsitedCovered); GenerateController(table.TableName.ToPascalCase(), pkTypeName, ifExsitedCovered); GenerateApiController(table.TableName.ToPascalCase(), pkTypeName, ifExsitedCovered); } } } }
/// <summary> /// 获取所有的表 /// </summary> /// <param name="context"></param> /// <returns></returns> public static DataTable GetCurrentDatabaseAllTables(this IDbContextCore context) { if (context == null) { throw new ArgumentNullException(nameof(context)); } var db = context.GetDatabase(); var sql = string.Empty; if (db.IsSqlServer()) { sql = "select * from (SELECT (case when a.colorder=1 then d.name else '' end) as TableName," + "(case when a.colorder=1 then isnull(f.value,'') else '' end) as TableComment" + " FROM syscolumns a" + " inner join sysobjects d on a.id=d.id and d.xtype='U' and d.name<>'dtproperties'" + " left join sys.extended_properties f on d.id=f.major_id and f.minor_id=0) t" + " where t.TableName!=''"; } else { throw new NotImplementedException("This method does not support current database yet."); } return(context.GetDataTable(sql)); }
public static IList <DbTable> GetCurrentDatabaseTableList(this IDbContextCore context) { var tables = context.GetCurrentDatabaseAllTables().ToList <DbTable>(); var db = context.GetDatabase(); //仅支持SQL server //DatabaseType dbType; //if (db.IsSqlServer()) // dbType = DatabaseType.MSSQL; //else //{ // throw new NotImplementedException("This method does not support current database yet."); //} var dbType = DatabaseType.MSSQL;//仅支持SQL server 有时间补充其他数据库 tables.ForEach(item => { item.Columns = context.GetTableColumns(item.TableName).ToList <DbTableColumn>(); item.Columns.ForEach(x => { var csharpType = DbColumnTypeCollection.DbColumnDataTypes.FirstOrDefault(t => t.DatabaseType == dbType && t.ColumnTypes.Split(',').Any(p => p.Trim().Equals(x.ColumnType, StringComparison.OrdinalIgnoreCase)))?.CSharpType; if (string.IsNullOrEmpty(csharpType)) { throw new SqlTypeException($"未从字典中找到\"{x.ColumnType}\"对应的C#数据类型,请更新DbColumnTypeCollection类型映射字典。"); } x.CSharpType = csharpType; }); }); return(tables); }
public static void ClearDataTables(this IDbContextCore context, params string[] tables) { if (tables == null) { var tableList = new List <string>(); var types = context.GetAllEntityTypes(); if (types.Any()) { foreach (var type in types) { var tableName = type.ClrType.GetCustomAttribute <TableAttribute>()?.Name; if (tableName.IsNullOrWhiteSpace()) { tableName = type.ClrType.Name; } tableList.Add(tableName); } } else { tableList.AddRange(context.GetCurrentDatabaseTableList().Select(m => m.TableName)); } tables = tableList.ToArray(); } var sql = new StringBuilder(); foreach (var table in tables) { sql.AppendLine($"delete from {table};"); } context.ExecuteSqlWithNonQuery(sql.ToString()); }
public static ICodeFirst CodeFirst(this IDbContextCore dbContext) { var codeFirst = AspectCoreContainer.Resolve <ICodeFirst>(); if (codeFirst == null) { throw new Exception("请先在Startup.cs文件的ConfigureServices方法中调用UseCodeGenerator方法以注册。"); } return(codeFirst); }
public BaseUserRepository(IDbContextCore dbContext, IBaseUserRoleMapRepository baseUserRoleMapRepository, IBasePermissionUserRepository basePermissionUserRepository, IBasePermissionRoleRepository basePermissionRoleRepository) : base(dbContext) { _baseUserRoleMapRepository = baseUserRoleMapRepository; _basePermissionRoleRepository = basePermissionRoleRepository; _basePermissionUserRepository = basePermissionUserRepository; _userRoleCache = new UserRoleCache(baseUserRoleMapRepository); _cache = new Base_UserModelCache(this); }
public static IDbFirst DbFirst(this IDbContextCore dbContext) { var dbFirst = ServiceLocator.Resolve <IDbFirst>(); if (dbFirst == null) { throw new Exception("请先在Startup.cs文件的ConfigureServices方法中调用UseCodeGenerator方法以注册。"); } dbFirst.DbContext = dbContext; return(dbFirst); }
public Base_UserModelCache(IDbContextCore dbContext) : base("Base_UserModel", userId => { if (userId.IsNullOrEmpty()) { return(null); } return(new Base_UserBusiness(dbContext).GetDataList("UserId", userId, new Pagination()).FirstOrDefault()); }) { }
public UserRepositories(IDbContextCore dbContext) : base(dbContext) { //插入成功后触发 Triggers <User> .Inserted += async entry => { await DistributedCacheManager.RemoveAsync("Redis_Cache_User");//插入成功后清除缓存以更新 }; //修改时触发 Triggers <User> .Updating += async entry => { await DistributedCacheManager.RemoveAsync("Redis_Cache_User");//插入成功后清除缓存以更新 }; }
public void GenerateAllCodesFromDatabase(IDbContextCore dbContext, bool ifExsitedCovered = false, Func <DbTable, bool> selector = null) { var tables = dbContext.GetCurrentDatabaseTableList(); if (tables != null && tables.Any()) { if (selector != null) { tables = tables.Where(selector).ToList(); } Generate(tables.ToList(), ifExsitedCovered); } }
//public AccountController(IUserStore<User, string> userStore) //{ //} public AccountController( IRoleStore <ApplicationRole, string> roleStore, IAuthenticationManager authenticationManager, IDbContextCore db, ApplicationSignInManager signInManager, //??? IUserStore <User, string> userStore ) { this.db = db; UserManager = new UserRepo(userStore, db); SignInManager = signInManager; RoleManager = new RoleRepo(roleStore, db); AuthenticationManager = authenticationManager; }
public static DataTable GetCurrentDatabaseAllTables(this IDbContextCore context) { if (context == null) { throw new ArgumentNullException(nameof(context)); } var db = context.GetDatabase(); var sql = string.Empty; if (db.IsSqlServer()) { sql = "select * from (SELECT (case when a.colorder=1 then d.name else '' end) as TableName," + "(case when a.colorder=1 then isnull(f.value,'') else '' end) as TableComment" + " FROM syscolumns a" + " inner join sysobjects d on a.id=d.id and d.xtype='U' and d.name<>'dtproperties'" + " left join sys.extended_properties f on d.id=f.major_id and f.minor_id=0) t" + " where t.TableName!=''"; } else if (db.IsMySql()) { sql = "SELECT TABLE_NAME as TableName," + " Table_Comment as TableComment" + " FROM INFORMATION_SCHEMA.TABLES" + $" where TABLE_SCHEMA = '{db.GetDbConnection().Database}'"; } else if (db.IsNpgsql()) { sql = "select relname as TableName," + " cast(obj_description(relfilenode,'pg_class') as varchar) as TableComment" + " from pg_class c" + " where relkind = 'r' and relname not like 'pg_%' and relname not like 'sql_%'" + " order by relname"; } else if (db.IsOracle()) { sql = "select \"a\".TABLE_NAME as \"TableName\",\"b\".COMMENTS as \"TableComment\" from USER_TABLES \"a\" JOIN user_tab_comments \"b\" on \"b\".TABLE_NAME=\"a\".TABLE_NAME"; } else { throw new NotImplementedException("This method does not support current database yet."); } return(context.GetDataTable(sql)); }
private static int ExecuteNoQuery <T>(this IDbContextCore context, string sql, DbParameter[] sqlParams) where T : new() { var db = context.GetDatabase(); var connection = db.GetDbConnection(); var cmd = connection.CreateCommand(); db.OpenConnection(); cmd.CommandText = sql; cmd.CommandType = CommandType.Text; if (sqlParams != null) { cmd.Parameters.AddRange(sqlParams); } var result = cmd.ExecuteNonQuery(); db.CloseConnection(); return(result); }
public override void OnAuthorization(AuthorizationContext filterContext) { IPrincipal user = filterContext.HttpContext.User; if (user != null && user.Identity.IsAuthenticated) { IDbContextCore dbiLOGIS = AutofacDependencyResolver.Current.ApplicationContainer.Resolve <IDbContextCore>(); var UserRepo = new UserRepo(new ApplicationUserStore <User>((DbContext)dbiLOGIS), dbiLOGIS); User usr = UserRepo.FindById(user.Identity.GetUserId()); if (usr != null) { TimeSpan ts = DateTime.Today - usr.LastPasswordChangedDate; // If true, that means the user's password expired // Let's force him to change his password before using the application if (ts.TotalDays > PasswordExpiresInDays && PasswordExpiresInDays > 0) { //filterContext.HttpContext.Response.Redirect("Login"); filterContext.HttpContext.Response.Redirect( string.Format("~/{0}/{1}/{2}?{3}", "IDENTITY", "Manage", "ChangePassword", "reason=expired"), false); //return; } else if (PasswordExpiresInDays - ts.TotalDays <= 10) { //int numberOfDaysToChangePassword = (int)(PasswordExpiresInDays - ts.TotalDays); //filterContext.HttpContext.Response.Redirect( // string.Format("~/{0}/{1}?{2}", "Home", "Index", // "expirationDays=" + numberOfDaysToChangePassword), false); } base.OnAuthorization(filterContext); } else { //base. //Debug.WriteLine() Console.WriteLine("nieznany user"); } } }
/// <summary> /// 拓展函数,执行sql获取表 /// </summary> /// <param name="context"></param> /// <param name="sql"></param> /// <param name="parameters"></param> /// <returns></returns> public static DataTable GetDataTable(this IDbContextCore context, string sql, params DbParameter[] parameters) { if (context == null) { throw new ArgumentNullException(nameof(context)); } var db = context.GetDatabase(); db.EnsureCreated(); var connection = db.GetDbConnection(); if (connection.State == ConnectionState.Closed) { connection.Open(); } var ds = new DataSet(); var dt = new DataTable(); DbCommand cmd; DataAdapter da; if (db.IsSqlServer()) { cmd = new SqlCommand(sql, (SqlConnection)connection); if (parameters != null && parameters.Length > 0) { cmd.Parameters.AddRange(parameters); } da = new SqlDataAdapter((SqlCommand)cmd); } else { throw new NotSupportedException("This method does not support current database yet."); } da.Fill(ds); dt = ds.Tables[0]; da.Dispose(); connection.Close(); return(dt); }
public static object ExecuteScalar(this IDbContextCore context, string sql, params DbParameter[] sqlParams) { var db = context.GetDatabase(); var connection = db.GetDbConnection(); var cmd = connection.CreateCommand(); if (connection.State == ConnectionState.Closed) { connection.Open(); } cmd.CommandText = sql; cmd.CommandType = CommandType.Text; if (sqlParams != null) { cmd.Parameters.AddRange(sqlParams); } var result = cmd.ExecuteScalar(); connection.Close(); return(result); }
public static IList <DbTable> GetCurrentDatabaseTableList(this IDbContextCore context) { var tables = context.GetCurrentDatabaseAllTables().ToList <DbTable>(); var db = context.GetDatabase(); DatabaseType dbType; if (db.IsSqlServer()) { dbType = DatabaseType.MSSQL; } else if (db.IsMySql()) { dbType = DatabaseType.MySQL; } else if (db.IsNpgsql()) { dbType = DatabaseType.PostgreSQL; } else if (db.IsOracle()) { dbType = DatabaseType.Oracle; } else { throw new NotImplementedException("This method does not support current database yet."); } var columns = context.GetTableColumns(tables.Select(m => m.TableName).ToArray()).ToList <DbTableColumn>(); tables.ForEach(item => { var dt = context.GetDataTable($"select * from {item.TableName} where 1 != 1"); item.Columns = columns.Where(m => m.TableName == item.TableName).ToList(); item.Columns.ForEach(x => { x.CSharpType = dt.Columns[x.ColName].DataType.Name; }); }); return(tables); }
public RapidDevelopmentRepository(IDbContextCore dbContext, IHostingEnvironment hostingEnvironment) : base(dbContext) { _contentRootPath = hostingEnvironment.ContentRootPath; }
protected BaseRepository(IDbContextCore dbContext) { DbContext = dbContext ?? throw new ArgumentNullException(nameof(dbContext)); DbContext.EnsureCreated(); }
public PermissionRoleRepository(IDbContextCore dbContext) : base(dbContext) { }
public BaseSysRoleRepository(IDbContextCore dbContext) : base(dbContext) { }
public Base_DatabaseLinkController(IDbContextCore dbContext) { _base_DatabaseLinkBusiness = new Base_DatabaseLinkBusiness(dbContext); }
/// <summary> /// /// </summary> /// <param name="dbContext"></param> public LogRepository(IDbContextCore dbContext) : base(dbContext) { }
public TestRepository(IDbContextCore dbContext) : base(dbContext) { }
protected BaseRepository([FromServices] IDbContextCore dbContext) { DbContext = dbContext ?? throw new ArgumentNullException(nameof(dbContext)); DbContext.EnsureCreatedAsync(); }
public BaseDatabaseLinkRepository(IDbContextCore dbContext) : base(dbContext) { }
public FilterIPRepository(IDbContextCore dbContext) : base(dbContext) { }
public PbdmOrganRepository(IDbContextCore dbContext) : base(dbContext) { }