(에센스) 2020 년 8 월 11 일 C \ # 기초 지식 포인트 데이터베이스 자동 생 성 실체 클래스

22267 단어 C#c#
데이터베이스 관련 sql
//         
private static string GetAllDataSql = "SELECT NAME FROM MASTER.DBO.SYSDATABASES ORDER BY NAME";
//       
private static string GetAllTableSql = "SELECT name FROM sys.tables where type ='U'";
//        
private static string GetTableInfoSql = @"SELECT DISTINCT a.COLUMN_NAME columnName, 
                                          a.DATA_TYPE typeName, a.IS_NULLABLE isnullAble
                                          From INFORMATION_SCHEMA.Columns a LEFT JOIN 
                                          INFORMATION_SCHEMA.KEY_COLUMN_USAGE b ON a.TABLE_NAME=b.TABLE_NAME ";


모델 관련 방법
//        
public static void CreateSingleModel(string tableName)
		{
			string sql = $"{GetTableInfoSql}  where a.table_name='{tableName}'";
			using (SqlConnection conn = new SqlConnection(ConnectionString))//ConnectionString        
			{
				SqlCommand sqlCommand = new SqlCommand(sql, conn);
				conn.Open();
				SqlDataReader reader = sqlCommand.ExecuteReader();
				StringBuilder stringBuilder = new StringBuilder();
				stringBuilder.Append($"public class {tableName} \r
{{\r
"
); while (reader.Read()) { stringBuilder.Append($" public {GetTypeOfColumn(reader["typeName"].ToString(), reader["isnullAble"].ToString())} {reader["columnName"]} {{get;set;}}\r
"
); } stringBuilder.Append("} \r
"
); string directory = string.IsNullOrEmpty(StaticConfiguration.FieldPath) ? AppDomain.CurrentDomain.BaseDirectory + "\\Model\\": FieldPath;//FieldPath StreamWriter sr; // , if (!Directory.Exists(directory)) { Directory.CreateDirectory(directory); } string path = directory + "\\" + tableName + ".txt"; // , if (File.Exists(path)) { sr = File.AppendText(path); } else { sr = File.CreateText(path); } sr.Write(stringBuilder.ToString()); sr.Flush(); sr.Close(); } }
//             
public static void BatchCreateModel()
		{
			using (SqlConnection conn = new SqlConnection(ConnectionString))//ConnectionString        
			{
				SqlCommand sqlCommand = new SqlCommand(GetAllTableSql, conn);
				conn.Open();
				SqlDataReader reader = sqlCommand.ExecuteReader();
				while (reader.Read())
				{
					CreateSingleModel(reader["name"].ToString());
				}
			}
		}


기타 보조 클래스
//      
private static string GetTypeOfColumn(string type, string nullAble)
		{
			if (type.Equals("int") && nullAble.Equals("NO"))
				return "int";
			else if (type.Equals("int") && nullAble.Equals("YES"))
				return "int?";
			else if (type.Equals("bit") && nullAble.Equals("Not"))
				return "bool";
			else if (type.Equals("bit") && nullAble.Equals("YES"))
				return "bool?";
			else if ((type.Equals("decimal")|| type.Equals("numeric")|| type.Equals("float") || type.Equals("real"))  && nullAble.Equals("NO")) 
				return "decimal";
			else if ((type.Equals("decimal") || type.Equals("numeric") || type.Equals("float") || type.Equals("real")) && nullAble.Equals("Yes"))
				return "decimal?";
			else if (type.Equals("datetime") && nullAble.Equals("YES"))
				return "DateTime?";
			else if (type.Equals("datetime") && nullAble.Equals("NO"))
				return "DateTime";
			else if (type.Equals("nchar") || type.Equals("char") || type.Equals("nvarchar") || type.Equals("varchar") || type.Equals("text"))
				return "string";
			else throw new Exception("    ");
		}

좋은 웹페이지 즐겨찾기