问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

有没有好用的ibatisnet自动生成mapper.xml和entity的工具呀

发布网友 发布时间:2022-04-09 02:13

我来回答

2个回答

懂视网 时间:2022-04-09 06:35

using Npgsql; 2 using NpgsqlTypes; 3 using System; 4 using System.Collections.Generic; 5 using System.Data; 6 using System.Text.RegularExpressions; 7 8 namespace SchemaExplorer 9 { 10 public class PostgreSQLSchemaProvider : IDbSchemaProvider, IDbConnectionStringEditor 11 { 12 public string Name 13 { 14 get 15 { 16 return "PostgreSQLSchemaProvider"; 17 } 18 } 19 20 public string Description 21 { 22 get 23 { 24 return "PostgreSQL Schema Provider"; 25 } 26 } 27 28 public string ConnectionString 29 { 30 get 31 { 32 return string.Empty; 33 } 34 } 35 36 public bool EditorAvailable 37 { 38 get 39 { 40 return false; 41 } 42 } 43 44 public bool ShowEditor(string currentConnectionString) 45 { 46 return false; 47 } 48 49 public TableSchema[] GetTables(string connectionString, DatabaseSchema database) 50 { 51 List<TableSchema> list = new List<TableSchema>(); 52 using (NpgsqlConnection npgsqlConnection = new NpgsqlConnection(connectionString)) 53 { 54 npgsqlConnection.Open(); 55 using (NpgsqlCommand npgsqlCommand = new NpgsqlCommand("select tablename, tableowner,obj_description(relfilenode,‘pg_class‘) as pg_description from pg_catalog.pg_tables as t left join pg_catalog.pg_class as c on t.tablename = c.relname where t.schemaname = ‘public‘ order by t.tablename", npgsqlConnection)) 56 { 57 using (NpgsqlDataReader npgsqlDataReader = npgsqlCommand.ExecuteReader(CommandBehavior.CloseConnection)) 58 { 59 while (npgsqlDataReader.Read()) 60 { 61 if (!npgsqlDataReader.IsDBNull(0) && npgsqlDataReader.GetString(0).ToUpper() != "CODESMITH_EXTENDED_PROPERTIES") 62 { 63 list.Add(new TableSchema(database, npgsqlDataReader.GetString(0), npgsqlDataReader.IsDBNull(1) ? string.Empty : npgsqlDataReader.GetString(1), DateTime.MinValue, new ExtendedProperty[] { new ExtendedProperty("CS_Description", npgsqlDataReader.IsDBNull(2) ? string.Empty : npgsqlDataReader.GetString(2), DbType.String, PropertyStateEnum.ReadOnly) })); 64 } 65 } 66 } 67 } 68 } 69 return list.ToArray(); 70 } 71 72 public IndexSchema[] GetTableIndexes(string connectionString, TableSchema table) 73 { 74 List<IndexSchema> list = new List<IndexSchema>(); 75 if (table.Columns == null) 76 table.Columns.AddRange(GetTableColumns(connectionString, table)); 77 DataSet ds = new DataSet(); 78 using (NpgsqlConnection npgsqlConnection = new NpgsqlConnection(connectionString)) 79 { 80 npgsqlConnection.Open(); 81 string text = string.Format("select schemaname, tablename, indexname, tablespace from pg_catalog.pg_indexes where schemaname=‘public‘ and tablename = ‘{0}‘", table.Name); 82 using (NpgsqlCommand npgsqlCommand = new NpgsqlCommand(text, npgsqlConnection)) 83 { 84 using (NpgsqlDataAdapter nda = new NpgsqlDataAdapter(npgsqlCommand)) 85 { 86 nda.Fill(ds, "pg_indexes"); 87 } 88 89 foreach (DataRow item in ds.Tables["pg_indexes"].Rows) 90 { 91 string @string = string.Empty; 92 @string = item.Field<string>("indexname"); 93 if (!string.IsNullOrEmpty(@string)) 94 { 95 string text2 = string.Format("SELECT n.nspname AS schemaname, c.relname AS tablename, i.relname AS indexname, t.spcname AS "tablespace", a.attname as "colname", x.indisunique as "unique", x.indisprimary as "primary", x.indisclustered as "clustered" FROM pg_catalog.pg_index x JOIN pg_catalog.pg_class c ON c.oid = x.indrelid JOIN pg_catalog.pg_class i ON i.oid = x.indexrelid JOIN pg_catalog.pg_attribute a ON a.attrelid = i.relfilenode LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace LEFT JOIN pg_catalog.pg_tablespace t ON t.oid = i.reltablespace WHERE c.relkind = ‘r‘::"char" AND i.relkind = ‘i‘::"char" AND n.nspname=‘public‘ AND c.relname=‘{0}‘ AND i.relname =‘{1}‘", table.Name, @string); 96 97 using (NpgsqlCommand npgsqlCommand2 = new NpgsqlCommand(text2, npgsqlConnection)) 98 { 99 using (NpgsqlDataAdapter nda2 = new NpgsqlDataAdapter(npgsqlCommand2)) 100 { 101 nda2.Fill(ds, "pg_catalog"); 102 } 103 } 104 List<string> list2 = new List<string>(); 105 bool? isPrimaryKey = false; 106 bool? isUnique = false; 107 bool? isClustered = false; 108 foreach (DataRow item2 in ds.Tables["pg_catalog"].Rows) 109 { 110 isPrimaryKey = item2.Field<bool?>("primary");// (!npgsqlDataReader2.IsDBNull(6) && npgsqlDataReader2.GetBoolean(6)); 111 isUnique = item2.Field<bool?>("unique"); //(!npgsqlDataReader2.IsDBNull(5) && npgsqlDataReader2.GetBoolean(5)); 112 isClustered = item2.Field<bool?>("clustered"); //(!npgsqlDataReader2.IsDBNull(7) && npgsqlDataReader2.GetBoolean(7)); 113 list2.Add(item2.Field<string>("colname")); 114 } 115 list.Add(new IndexSchema(table, @string, isPrimaryKey ?? false, isUnique ?? false, isClustered ?? false, list2.ToArray())); 116 list2.Clear(); 117 ds.Tables["pg_catalog"].Clear(); 118 } 119 } 120 } 121 } 122 return list.ToArray(); 123 } 124 125 public ColumnSchema[] GetTableColumns(string connectionString, TableSchema table) 126 { 127 List<ColumnSchema> list = new List<ColumnSchema>(); 128 using (NpgsqlConnection npgsqlConnection = new NpgsqlConnection(connectionString)) 129 { 130 npgsqlConnection.Open(); 131 string text = string.Format("select column_name, is_nullable, character_maximum_length, numeric_precision, numeric_scale, data_type, udt_name,col_description(b.attrelid,b.attnum) as pg_description from information_schema.columns as a join pg_attribute as b on a.column_name=b.attname join pg_class as c on a.table_name=c.relname and b.attrelid = c.oid where b.attnum>0 and a.table_schema = ‘public‘ and a.table_name=‘{0}‘", table.Name); 132 using (NpgsqlCommand npgsqlCommand = new NpgsqlCommand(text, npgsqlConnection)) 133 { 134 using (NpgsqlDataReader npgsqlDataReader = npgsqlCommand.ExecuteReader(CommandBehavior.CloseConnection)) 135 { 136 while (npgsqlDataReader.Read()) 137 { 138 bool allowDBNull = npgsqlDataReader.IsDBNull(1) || npgsqlDataReader.GetString(1) == "YES"; 139 byte precision = (byte)(npgsqlDataReader.IsDBNull(3) ? 0 : npgsqlDataReader.GetInt32(3)); 140 int size = npgsqlDataReader.IsDBNull(2) ? 0 : npgsqlDataReader.GetInt32(2); 141 int scale = npgsqlDataReader.IsDBNull(4) ? 0 : npgsqlDataReader.GetInt32(4); 142 string name = npgsqlDataReader.IsDBNull(0) ? string.Empty : npgsqlDataReader.GetString(0); 143 string text2 = npgsqlDataReader.IsDBNull(5) ? string.Empty : npgsqlDataReader.GetString(5); 144 string type = npgsqlDataReader.IsDBNull(6) ? string.Empty : npgsqlDataReader.GetString(6); 145 list.Add(new ColumnSchema(table, name, PostgreSQLSchemaProvider.GetDbType(type), text2, size, precision, scale, allowDBNull, new ExtendedProperty[] 146 { 147 new ExtendedProperty("NpgsqlDbType", PostgreSQLSchemaProvider.GetNativeDbType(text2), DbType.String), 148 new ExtendedProperty("CS_Description",npgsqlDataReader.IsDBNull(7) ? string.Empty : npgsqlDataReader.GetString(7), DbType.String) 149 })); 150 } 151 if (!npgsqlDataReader.IsClosed) 152 { 153 npgsqlDataReader.Close(); 154 } 155 } 156 } 157 } 158 return list.ToArray(); 159 } 160 161 public TableKeySchema[] GetTableKeys(string connectionString, TableSchema table) 162 { 163 List<TableKeySchema> list = new List<TableKeySchema>(); 164 using (NpgsqlConnection npgsqlConnection = new NpgsqlConnection(connectionString)) 165 { 166 npgsqlConnection.Open(); 167 string text = string.Format("SELECT constraint_name as constrname FROM information_schema.table_constraints WHERE table_name = ‘{0}‘ AND constraint_type = ‘FOREIGN KEY‘ AND constraint_schema=‘public‘", table.Name); 168 using (NpgsqlCommand npgsqlCommand = new NpgsqlCommand(text, npgsqlConnection)) 169 { 170 string text2 = string.Format("SELECT px.conname as constrname, att.attname as colname, fore.relname as reftabname, fatt.attname as refcolname, CASE px.confupdtype WHEN ‘a‘ THEN ‘NO ACTION‘ WHEN ‘r‘ THEN ‘RESTRICT‘ WHEN ‘c‘ THEN ‘CASCADE‘ WHEN ‘n‘ THEN ‘SET NULL‘ WHEN ‘d‘ THEN ‘SET DEFAULT‘ END AS on_update, CASE px.confdeltype WHEN ‘a‘ THEN ‘NO ACTION‘ WHEN ‘r‘ THEN ‘RESTRICT‘ WHEN ‘c‘ THEN ‘CASCADE‘ WHEN ‘n‘ THEN ‘SET NULL‘ WHEN ‘d‘ THEN ‘SET DEFAULT‘ END AS on_delete, CASE px.contype WHEN ‘p‘ THEN true WHEN ‘f‘ THEN false END as IsPrimaryKey from pg_constraint px left join pg_class home on (home.oid = px.conrelid) left join pg_class fore on (fore.oid = px.confrelid) left join pg_attribute att on (att.attrelid = px.conrelid AND att.attnum = ANY(px.conkey)) left join pg_attribute fatt on (fatt.attrelid = px.confrelid AND fatt.attnum = ANY(px.confkey)) where (home.relname = ‘{0}‘) and px.contype = ‘f‘ order by constrname", table.Name); 171 using (NpgsqlCommand npgsqlCommand2 = new NpgsqlCommand(text2, npgsqlConnection)) 172 { 173 NpgsqlDataAdapter npgsqlDataAdapter = new NpgsqlDataAdapter(npgsqlCommand); 174 DataSet dataSet = new DataSet(); 175 npgsqlDataAdapter.Fill(dataSet, "constraint"); 176 npgsqlDataAdapter.SelectCommand = npgsqlCommand2; 177 npgsqlDataAdapter.Fill(dataSet, "keys"); 178 if (dataSet.Tables[0].Rows.Count > 0) 179 { 180 dataSet.Relations.Add("Contraint_to_Keys", dataSet.Tables[0].Columns["constrname"], dataSet.Tables[1].Columns["constrname"]); 181 foreach (DataRow dataRow in dataSet.Tables[0].Rows) 182 { 183 string name = dataRow["constrname"].ToString(); 184 DataRow[] childRows = dataRow.GetChildRows("Contraint_to_Keys"); 185 string[] array = new string[childRows.Length]; 186 string[] array2 = new string[childRows.Length]; 187 string name2 = table.Name; 188 string primaryKeyTable = childRows[0]["reftabname"].ToString(); 189 for (int i = 0; i < childRows.Length; i++) 190 { 191 array2[i] = childRows[i]["colname"].ToString(); 192 array[i] = childRows[i]["refcolname"].ToString(); 193 } 194 list.Add(new TableKeySchema(table.Database, name, array2, name2, array, primaryKeyTable)); 195 } 196 } 197 } 198 } 199 string text3 = string.Format("SELECT px.conname as constrname FROM pg_constraint px left join pg_class fore on fore.oid = px.confrelid where fore.relname = ‘{0}‘", table.Name); 200 using (NpgsqlCommand npgsqlCommand3 = new NpgsqlCommand(text3, npgsqlConnection)) 201 { 202 string text4 = string.Format("SELECT px.conname as constrname, fatt.attname as colname, home.relname as reftabname, att.attname as refcolname, CASE px.confupdtype WHEN ‘a‘ THEN ‘NO ACTION‘ WHEN ‘r‘ THEN ‘RESTRICT‘ WHEN ‘c‘ THEN ‘CASCADE‘ WHEN ‘n‘ THEN ‘SET NULL‘ WHEN ‘d‘ THEN ‘SET DEFAULT‘ END AS on_update, CASE px.confdeltype WHEN ‘a‘ THEN ‘NO ACTION‘ WHEN ‘r‘ THEN ‘RESTRICT‘ WHEN ‘c‘ THEN ‘CASCADE‘ WHEN ‘n‘ THEN ‘SET NULL‘ WHEN ‘d‘ THEN ‘SET DEFAULT‘ END AS on_delete, CASE px.contype WHEN ‘p‘ THEN true WHEN ‘f‘ THEN false END as IsPrimaryKey from pg_constraint px left join pg_class home on (home.oid = px.conrelid) left join pg_class fore on (fore.oid = px.confrelid) left join pg_attribute att on (att.attrelid = px.conrelid AND att.attnum = ANY(px.conkey)) left join pg_attribute fatt on (fatt.attrelid = px.confrelid AND fatt.attnum = ANY(px.confkey)) where (fore.relname = ‘{0}‘) order by constrname", table.Name); 203 using (NpgsqlCommand npgsqlCommand4 = new NpgsqlCommand(text4, npgsqlConnection)) 204 { 205 NpgsqlDataAdapter npgsqlDataAdapter2 = new NpgsqlDataAdapter(); 206 DataSet dataSet2 = new DataSet(); 207 npgsqlDataAdapter2.SelectCommand = npgsqlCommand3; 208 npgsqlDataAdapter2.Fill(dataSet2, "constraint"); 209 npgsqlDataAdapter2.SelectCommand = npgsqlCommand4; 210 npgsqlDataAdapter2.Fill(dataSet2, "keys"); 211 if (dataSet2.Tables[0].Rows.Count > 0) 212 { 213 dataSet2.Relations.Add("Contraint_to_Keys", dataSet2.Tables[0].Columns["constrname"], dataSet2.Tables[1].Columns["constrname"]); 214 foreach (DataRow dataRow2 in dataSet2.Tables[0].Rows) 215 { 216 string name3 = dataRow2["constrname"].ToString(); 217 DataRow[] childRows2 = dataRow2.GetChildRows("Contraint_to_Keys"); 218 string[] array3 = new string[childRows2.Length]; 219 string[] array4 = new string[childRows2.Length]; 220 string foreignKeyTable = childRows2[0]["reftabname"].ToString(); 221 string name4 = table.Name; 222 for (int j = 0; j < childRows2.Length; j++) 223 { 224 array4[j] = childRows2[j]["refcolname"].ToString(); 225 array3[j] = childRows2[j]["colname"].ToString(); 226 } 227 list.Add(new TableKeySchema(table.Database, name3, array4, foreignKeyTable, array3, name4)); 228 } 229 } 230 } 231 } 232 } 233 return list.ToArray(); 234 } 235 236 public PrimaryKeySchema GetTablePrimaryKey(string connectionString, TableSchema table) 237 { 238 PrimaryKeySchema result = null; 239 DataSet ds = new DataSet(); 240 using (NpgsqlConnection npgsqlConnection = new NpgsqlConnection(connectionString)) 241 { 242 npgsqlConnection.Open(); 243 string text = string.Format("select constraint_name from information_schema.table_constraints where constraint_schema=‘public‘ and table_name=‘{0}‘ and constraint_type=‘PRIMARY KEY‘", table.Name); 244 using (NpgsqlCommand npgsqlCommand = new NpgsqlCommand(text, npgsqlConnection)) 245 { 246 using (NpgsqlDataAdapter nda = new NpgsqlDataAdapter(npgsqlCommand)) 247 { 248 nda.Fill(ds, "table_constraints"); 249 } 250 } 251 252 string text2 = string.Format("select px.conname as ConstraintName, att.attname as ColumnName from pg_constraint px inner join pg_class home on (home.oid = px.conrelid) left join pg_attribute att on (att.attrelid = px.conrelid AND att.attnum = ANY(px.conkey)) where (home.relname = ‘{0}‘) and px.contype = ‘p‘", table.Name); 253 254 255 using (NpgsqlCommand npgsqlCommand2 = new NpgsqlCommand(text2, npgsqlConnection)) 256 { 257 using (NpgsqlDataAdapter nda = new NpgsqlDataAdapter(npgsqlCommand2)) 258 { 259 nda.Fill(ds, "pg_constraint"); 260 } 261 } 262 263 foreach (DataRow item in ds.Tables["table_constraints"].Rows) 264 { 265 List<string> list = new List<string>(); 266 foreach (DataRow item2 in ds.Tables["pg_constraint"].Rows) 267 { 268 list.Add(item2.Field<string>("ColumnName")); 269 } 270 result = new PrimaryKeySchema(table, item.Field<string>("constraint_name"), list.ToArray()); 271 } 272 273 } 274 return result; 275 } 276 277 public DataTable GetTableData(string connectionString, TableSchema table) 278 { 279 DataTable dataTable; 280 using (NpgsqlConnection npgsqlConnection = new NpgsqlConnection(connectionString)) 281 { 282 dataTable = new DataTable(table.Name); 283 string text = string.Format("SELECT * FROM {0}", table.Name); 284 using (NpgsqlDataAdapter npgsqlDataAdapter = new NpgsqlDataAdapter(text, npgsqlConnection)) 285 { 286 npgsqlDataAdapter.Fill(dataTable); 287 } 288 if (npgsqlConnection.State != ConnectionState.Closed) 289 { 290 npgsqlConnection.Close(); 291 } 292 } 293 return dataTable; 294 } 295 296 public ExtendedProperty[] GetExtendedProperties(string connectionString, SchemaObjectBase schemaObject) 297 { 298 List<ExtendedProperty> list = new List<ExtendedProperty>(); 299 if (schemaObject is ColumnSchema) 300 { 301 ColumnSchema columnSchema = schemaObject as ColumnSchema; 302 string text = string.Format("select pg_get_serial_sequence(c.table_name, c.column_name) as EXTRA, COLUMN_DEFAULT, data_type from pg_tables t INNER JOIN information_schema.columns c on t.tablename = c.table_name WHERE schemaname = ‘{0}‘ AND table_name = ‘{1}‘ AND COLUMN_NAME = ‘{2}‘ order by ordinal_position", columnSchema.Table.Database.Name, columnSchema.Table.Name, columnSchema.Name); 303 using (NpgsqlConnection npgsqlConnection = new NpgsqlConnection(connectionString)) 304 { 305 npgsqlConnection.Open(); 306 using (NpgsqlCommand npgsqlCommand = new NpgsqlCommand(text, npgsqlConnection)) 307 { 308 using (IDataReader dataReader = npgsqlCommand.ExecuteReader(CommandBehavior.CloseConnection)) 309 { 310 while (dataReader.Read()) 311 { 312 string text2 = dataReader.IsDBNull(0) ? string.Empty : dataReader.GetString(0).ToLower(); 313 string value = dataReader.IsDBNull(1) ? null : dataReader.GetString(1).ToUpper(); 314 string value2 = dataReader.GetString(2).ToUpper(); 315 bool flag = !string.IsNullOrEmpty(text2); 316 list.Add(new ExtendedProperty("CS_IsIdentity", flag, columnSchema.DataType)); 317 if (flag) 318 { 319 list.Add(new ExtendedProperty("CS_IdentitySeed", 1, columnSchema.DataType)); 320 list.Add(new ExtendedProperty("CS_IdentityIncrement", 1, columnSchema.DataType)); 321 } 322 list.Add(new ExtendedProperty("CS_Default", value, DbType.String)); 323 list.Add(new ExtendedProperty("CS_SystemType", value2, DbType.String)); 324 list.Add(new ExtendedProperty("CS_Sequence", text2.ToUpper(), DbType.String)); 325 } 326 if (!dataReader.IsClosed) 327 { 328 dataReader.Close(); 329 } 330 } 331 } 332 if (npgsqlConnection.State != ConnectionState.Closed) 333 { 334 npgsqlConnection.Close(); 335 } 336 } 337 } 338 return list.ToArray(); 339 var cpro_id = "u6292429";

热心网友 时间:2022-04-09 03:43

发现一个好用的IBatis.Net生成工具,可以根据数据库自动生成domain和xml文件,名称是MyGeneration。

我试用了一下,效果不错。
详细介绍参见它的主页:http://www.mygenerationsoftware.com/portal/default.aspx

支持的语言为:C#,vb.net
支持的数据库有:Microsoft SQL, Oracle, IBM DB2, PostgreSQL, Microsoft Access, FireBird, Interbase, VistaDB, SQLite, MySQL, Advantage and Pervasive
支持的架构有:dOOdads, EntitySpaces, EasyObjects.NET/EntLib, Gentle.NET, Opf3, NHibernate, Microsoft's DAAB, DotNetNuke, iBatis

也就是说这个工具是根据模板配置的,你也可以写一个自己的模板,来生成自己需要的格式的代码文件,比较方便灵活。
目前已经提供了一些常用的ORM框架的模板
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 马桶下水慢最后时咕嘟咕嘟的水声是什么? 卫生间下水道怎么老有咔咔咔声 马桶下水慢 而且有咕噜噜的声音 是什么原因? 冲厕所时为什么洗手池的下水道会发出隆隆响声还会喷出水 马桶下水总道堵了怎么办,总能听见回水声 白色地板砖上有颜色用什么方法去除色 地板砖上浸上颜色了,要怎么才能弄掉? 什么软件可以按小时查看步数? 步数,跑步距离iPhone 是怎么知道的?健康软件? 安装什么软件可随时查看运动步数? PostgreSQL自定义函数invalid type name BUG n卡看视频怎么设置 n卡驱动精彩时刻为什么只能保存一天的? n卡即时重放在哪看 马莲草籽怎么种才能出? 乌龟和海龟有什么不同、 乌龟能和狗狗养一起吗求答案 哈士奇吃了乌龟怎么办 受在一本小说里穿成鹦鹉,猫,仓鼠,乌龟的耽美小说 在楼房养个动物,大于乌龟(中大),不能是海里的,不能发臭,好养最好。能让父母同意的。 在节假日或人行大额系统关闭时,用工行企业网银“付款业务-网上汇款-逐笔支付”是否支持跨行快汇? 白醋、酒精、除胶剂、杀虫剂、花露水、清洁剂可以放在一个柜子里面吗? 各位亲,洗洁精,酒精,八四,能不能放到一个柜子里? 酒精弄到衣服上放衣柜里会爆炸吗? 卧室发财树的摆放位置,卧室发财树应该摆放在哪个位置好? 我用75%的酒精喷了衣服然后放入柜子中,会不会浓度达到3%有危险? 发财树客厅摆放什么位置比较好 洗洁精八四酒精能不能放到一个柜子里? 家中的发财树摆放哪个位置最吉利 我家有一瓶75度的玻璃瓶没开封的酒精放在洗菜盆下面小柜子里了安全吗? 酒精可以洒在木柜吗 戊二醛过氧化氢甲醛75酒精这四样东西可以存放在一个柜子当中吗? 碗柜洒酒精之后能消毒吗? 请问win10专业版的屏幕自动调节亮度怎么关闭?显示中没有自动调节亮度!审题! win10家庭版 亮度自动调节怎么关 没有亮度自动控控制关闭选项 麻烦不要随便复制粘贴 win10自动亮度调节怎么没了 如何清洁晾衣架 三星手机用odin3刷机只用了3秒钟正常吗?为啥手机重启后到现在还没开机?还要等多久,还是说没刷 三星用Odin3线刷机,可以只刷system区分吗,也就是线刷包里只留下system.img其他都 三星ODIN3刷机无反应如图。