Tôi đã sử dụng lại phương pháp này bằng cách sử dụng một DataTable làm tham số cho một thủ tục được lưu trữ và nó hoạt động rất tốt. Đây là mã làm việc được đơn giản hóa:DataTable với trường byte [] làm tham số cho một thủ tục được lưu trữ
using (dbEntities dbe = new dbEntities())
{
var dt = new dataTable();
dt.Columns.Add("ID");
dt.Columns.Add("Message");
dt.Columns.Add("CreatedOn", typeof(DateTime));
foreach (var row in randomDataSource)
{
dt.Rows.Add(
row.id,
row.message,
DateTime.Now
);
}
var tableType = new SqlParameter("tableType", SqlDbType.Structured);
tableType.Value = dt;
tableType.TypeName = "[dbo].[RandomTableType]";
dbe.ExecuteStoreCommand(
"EXEC [dbo].[SaveTable] @tableType",
new object[] { tableType }
);
}
Sự cố phát sinh khi trường tôi muốn thêm là loại nhị phân. tức là:
dt.Columns.Add("BinaryMessage", typeof(byte[]));
Cột tương ứng trong cơ sở dữ liệu là varbinary(MAX)
bằng cách này. Khi tôi cố gắng chạy điều này, tôi nhận được lỗi này:
Implicit conversion from data type nvarchar(max) to varbinary(max) is not allowed. Use the CONVERT function to run this query.
Làm cách nào để sửa đổi những gì tôi phải thực hiện công việc này?
như bạn có thể biết byte [] không phải là kiểu dữ liệu, sử dụng byte thay vì –
Nhưng một mảng là một kiểu dữ liệu ... – kei