久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

SQL Server數據庫中表名稱、字段比較的示例分析

166次閱讀
沒有評論

共計 3661 個字符,預計需要花費 10 分鐘才能閱讀完成。

這篇文章主要為大家展示了“SQL Server 數據庫中表名稱、字段比較的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓丸趣 TV 小編帶領大家一起研究并學習一下“SQL Server 數據庫中表名稱、字段比較的示例分析”這篇文章吧。

前言

項目中一般分測試環境(QAS),生產環境(PRD),當我們的項目經歷了一次周期跨度較長的更新后,當我們發布到生產環境時,首要的任務是將新增的表,字段更新到生產數據庫。很多時候,當我們發布更新的時候,已經很難記得做了哪些變更。

當然有的人會說,1.EF Code First 有 history 記錄,這是一種辦法,可靠么?不可靠。相信即便是用 Code First,直接改數據庫的肯定不止我一個。

 2. 查看實體類變更記錄,這也是一個辦法。那如果用的 DB First 的呢?當然也可以看,就是很麻煩。

 3. 開發過程中,對數據庫的變更記下來。這么做過的肯定也不止我一個。手動狗頭

 。。。。。

中午的時候,就想著另外一個項目下個月要更新,改了 N 多的東西,到時候數據庫咋更新呢。就想著寫個工具比較兩個版本數據庫,表名稱,字段,字段類型的區別。

說干就干(本來想著用 EF,DBContext 應該可以實現,無奈學藝不精,最終還是回到了 ADO.Net)。

控制臺應用程序,目前只能對比新增,修改(SQl Server)。

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using Microsoft.EntityFrameworkCore;
namespace EFGetTable
 class Program
 { static void Main(string[] args)
 {
 string prdconnectionstring =  Data Source=localhost;initial catalog=ttPRD;user id=sa;password=password;MultipleActiveResultSets=True 
 var prd = GetTableNames(prdconnectionstring);
 string qasconnectionstring =  Data Source=localhost;initial catalog=ttqas;user id=sa;password=password;MultipleActiveResultSets=True 
 var qas = GetTableNames(qasconnectionstring);
 CompareTable(prd, qas);
 }
 public static List TableInfo  GetTableNames(string connectionstr)
 {
 var tableresult = new List TableInfo 
 string sqlTableName =  Select * From Information_Schema.Tables 
 using (SqlConnection connection = new SqlConnection(connectionstr))
 { using (SqlCommand cmd = new SqlCommand(sqlTableName, connection))
 {
 try
 { connection.Open();
 SqlDataReader dr = cmd.ExecuteReader();//
 while (dr.Read())
 {
 //  表名
 TableInfo table = new TableInfo();
 table.TableName = dr[Table_Name].ToString();

 table.columns.AddRange(GetColumnNamesByTable(dr[ Table_Name].ToString(), connection));  tableresult.Add(table);  }
 Console.ForegroundColor = ConsoleColor.Red;  Console.Error.WriteLine(e.Message);  connection.Close();  }  }  return tableresult;  }
 }  public static List CloumnInfo  GetColumnNamesByTable(string tableName, SqlConnection connection)  {  var Columnresults = new List CloumnInfo  string sqlcolum = $ Select * From Information_Schema.Columns t Where t.Table_Name =\ {tableName}\  using (SqlCommand cmd = new SqlCommand(sqlcolum, connection))  { SqlDataReader dr = cmd.ExecuteReader();//  while (dr.Read())  {  //  表名  CloumnInfo column = new CloumnInfo();  column.CloumnName = dr[Column_name].ToString();  column.DateType = dr[DATA_TYPE].ToString() + dr[ CHARACTER_MAXIMUM_LENGTH].ToString();  Columnresults.Add(column);  }  return Columnresults;  }  }  public static void CompareTable(List TableInfo  prd, List TableInfo  qas)  { foreach (var p in qas)  { var tablequery = prd.AsQueryable().Where(t =  t.TableName.Equals(p.TableName));  if (!tablequery.Any())  { Console.WriteLine($ New Created Table {p.TableName}  continue;  }  else  { var querytable = tablequery.FirstOrDefault();  p.columns.ForEach(c =  { var Cloumnquery = querytable.columns.Select(cc =  cc.CloumnName).Contains(c.CloumnName);  if (!Cloumnquery)  { Console.WriteLine($ New add cloumn: {c.CloumnName} on Table {p.TableName}  }  else  { var querycloumn = querytable.columns.Where(qt =  qt.CloumnName.Equals(c.CloumnName)).FirstOrDefault();  if (!querycloumn.DateType.Equals(c.DateType))  { Console.WriteLine($ DateType Different: cloumn: {c.CloumnName} , {querycloumn.DateType}== {c.DateType} on Table {p.TableName}  }  }  });  }  }  }  }  public class TableInfo  { public TableInfo()  {  columns = new List CloumnInfo  }  public string TableName { get; set; }  public List CloumnInfo  columns { get; set; }  }  public class CloumnInfo  { public string CloumnName { get; set; }  public string DateType { get; set; }  } }

測試結果

以上是“SQL Server 數據庫中表名稱、字段比較的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注丸趣 TV 行業資訊頻道!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-01發表,共計3661字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 安康市| 延边| 潞西市| 无棣县| 浦江县| 固原市| 利川市| 娱乐| 江阴市| 孝义市| 大名县| 韩城市| 达拉特旗| 社旗县| 九江市| 泸水县| 张掖市| 错那县| 崇文区| 宜兰县| 新疆| 乡城县| 巢湖市| 襄汾县| 墨竹工卡县| 曲阳县| 昆山市| 郎溪县| 潞城市| 清原| 上饶县| 甘孜县| 桂东县| 铜山县| 牟定县| 麟游县| 铜梁县| 崇礼县| 德钦县| 镇坪县| 平陆县|