thể trùng lặp:
How should I store GUID in MySQL tables?cột gì về MySQL sẽ trở lại như System.Guid trong C#
VARCHAR sẽ trở lại như string
BLOB sẽ trở lại dưới dạng byte[]
nhưng, loại cột nào của MySQL sẽ trả lại là System.Guid trong C#
cảm ơn.
được sửa đổi: Tôi đã tìm thấy câu trả lời
nhờ DaveHogan đó mang lại cho tôi những đầu mối về ORM (Relation Mapping Object)
tôi bắt đầu tìm kiếm thông tin về việc chuyển đổi kiểu dữ liệu (bản đồ) do Connector/NET . Tôi đang sử dụng Trình kết nối DotNet MySQL (Trình kết nối/NET)
có 3 tình huống khác nhau mà Trình kết nối/NET thực hiện.
Dưới đây là những gì tôi đã tìm thấy:
Tình hình 1:
Bắt đầu từ Connnector/NET 6.1.1, CHAR (36) sẽ được tự động chuyển đổi như System.GUID trong C# và Binary (16) sẽ được coi là System.Byte [].
2nd Tình hình:
Nếu bạn sử dụng cũ Connector/NET, Binary (16) sẽ được tự động chuyển đổi như System.GUID khi giá trị được truyền vào C# và CHAR (36) sẽ được xử lý như System.String.
3rd trạng:
Nếu bạn sử dụng phiên bản mới hơn Connector/NET (mới hơn 6.1.1), và nếu bạn muốn sử dụng Binary (16) AS System.GUID (được mặc định nó không phải là), bạn phải thêm tùy chọn kết nối Old Guids = true trong Chuỗi kết nối.
Ví dụ:
server=localhost;user=root;password=qwerty;database=test;old guids=true;
của thành viên này, CHAR (36) sẽ được chuyển đổi như System.String và Binary (16) = System.GUID
Đọc thêm về các lựa chọn kết nối của Cũ Hướng dẫn tại:
MySQL 5.6 Reference Manual: 21.2.6. Connector/Net Connection String Options Reference
---------------------------------------- ------------------------------
Thông tin bổ sung:
Cách chèn hệ thống.GUID vào Cơ sở dữ liệu MySql
------------------------------------------- ---------------------------
Đây là bảng mẫu, chúng tôi sẽ chèn 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
Chèn System.GUID vào 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(); }
Đây là định danh duy nhất trong MSSQL. Có lẽ nó tương tự trong MySQL – Ondra