可能重複:
How should I store GUID in MySQL tables?什麼列類型將在C#返回作爲的System.Guid
VARCHAR將恢復爲string
BLOB將返回as byte[]
但是,什麼列類型的MySQL將返回爲System.Guid in C#
謝謝。
編輯:我已經找到了答案
感謝DaveHogan這給了我關於ORM(對象關係映射)的線索
我開始尋找有關數據類型轉換(映射)的信息通過連接器/ NET做。 我使用MySQL Dot Net Connector(Connector/NET)
Connector/NET執行的存在不同的3種情況。
下面是我發現:
1日情況:
從Connnector/NET 6.1.1,CHAR(36)將自動在C#轉換爲的System.Guid和BINARY啓動( 16)將被視爲System.Byte []。
第二情況:
如果使用較舊的連接器/ NET,BINARY(16)將當值被傳遞到C#和CHAR(36)將被視爲被自動轉換爲的System.Guid作爲System.String。
第三狀況:
如果使用新的連接器/ NET(更新於6.1.1),如果你想使用BINARY(16) AS的System.Guid(被默認情況下它是不是),您必須在連接字符串中添加連接選項Old Guids = true。
實施例:
server=localhost;user=root;password=qwerty;database=test;old guids=true;
由此,CHAR(36)將被轉換爲System.String和BINARY(16) =的System.Guid
瞭解更多關於舊的連接選項Guids at:
MySQL 5.6 Reference Manual: 21.2.6. Connector/Net Connection String Options Reference
---------------------------------------- ------------------------------
附加信息:
如何插入系統。GUID到MySql數據庫中
------------------------------------------- ---------------------------
這是一個樣本表,我們將要插入System.GUID:
CREATE TABLE `testdata` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `binary` binary(16) DEFAULT NULL, `char` char(36) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
插入的System.Guid到MySQL
string constr = "server=localhost;user=root;pwd=qwerty;database=test;"; using (MySqlConnection conn = new MySqlConnection(constr)) { conn.Open(); // Create a System.GUID byte[] ba = new byte[16]; Random rd = new Random(); rd.NextBytes(ba); System.Guid guid = new Guid(ba); // Prepare GUID values in SQL format string guidForChar36 = guid.ToString(); string hexstring = BitConverter.ToString(guid.ToByteArray()); string guidForBinary16 = "0x" + hexstring.Replace("-", string.Empty); string sql = "insert into testdata(`binary`,`char`)" + "values(" + guidForBinary16 + "," + "'" + guidForChar36 + "');"; MySqlCommand cmd = new MySqlCommand(sql, conn); cmd.ExecuteNonQuery(); conn.Close(); }
它是MSSQL中的唯一標識符。也許它在MySQL – Ondra