現在我們的項目里面FreeSql用得越來越多了,但是前面發現FreeSql有個非常危險的問題。
在把一個老項目的數據庫轉成FreeSql的時候,數據庫表中有一個字段是長文本的類型,因為前面沒有采用FreeSql庫的,所以原先也是沒有關於StringLength的配置,重構的時候忽略了這個細節,也忘了把這個參數配上。
private string _Content; [Column(StringLength = -2)] public string Content { get { return _Content; } set { if (_Content != value) { NotifyPropertyChanging("Content"); _Content = value; NotifyPropertyChanged("Content"); } } }
這樣的后果是,FreeSql配置認為這個字段是varchar(255),並且把mysql數據庫表的字段類型,由longtext改成了varchar(255),並且把原先所有記錄的這個字段的內容都只保留255個字符。
雖然后面把這個屬性加上了,但是數據卻已經丟失恢復不回來了。
個人感覺這個是一個非常嚴重的安全漏洞和安全隱患,如果在一些生產環境下的項目,這已經是非常嚴重的事情了。
不知道怎么樣才能很好地避免這個問題的發生。