Я пытался получить данные BLOB-объектов из базы данных с помощью хранимой процедуры. Я могу получить данные, но проблема в том, что данные относятся к приложению ASP.NET MVC, где оно преобразуется с использованием ConvertToList
:
public static List<T> ConvertToList<T>(this DataTable dt)
{
var columnNames = dt.Columns.Cast<DataColumn>().Select(c => c.ColumnName).ToList();
var properties = typeof(T).GetProperties();
return dt.AsEnumerable().Select(row =>
{
var objT = Activator.CreateInstance<T>();
foreach (var pro in properties)
{
if (columnNames.Contains(pro.Name))
{
if (pro.PropertyType == Type.GetType("System.Int32"))
pro.SetValue(objT, row[pro.Name].ToString().ToInt32(), null);
else if (pro.PropertyType == Type.GetType("System.Double"))
pro.SetValue(objT, row[pro.Name].ToString().ToDouble(), null);
else if (pro.PropertyType == Type.GetType("System.String"))
pro.SetValue(objT, row[pro.Name].ToString(), null);
else if (pro.PropertyType == Type.GetType("System.Int64"))
pro.SetValue(objT, row[pro.Name].ToString().ToInt32(), null);
else if (pro.PropertyType == Type.GetType("System.Boolean"))
pro.SetValue(objT, Convert.ToBoolean(row[pro.Name].ToString()), null);
//else if (pro.PropertyType == Type.GetType("System.Byte[]"))
// pro.SetValue(objT, Convert.ToByte(row[pro.Name]), null);
}
}
return objT;
}).ToList();
}
Когда извлекаются данные System.Byte[]
, они всегда устанавливаются в нуль;Я пытался преобразовать его, используя обычное преобразование байтов в строку, например
string result = System.Text.Encoding.UTF8.GetString(byteArray);
и
string s3 = Convert.ToBase64String(bytes);
Это невозможно сделать, поскольку мой тип return
является var
, поэтому япопытался выполнить преобразование с помощью хранимой процедуры, когда она выбирает вот так
CONVERT(VARCHAR(MAX), LME.CoverPageImage, 2)
, но она все равно возвращает нулевое значение после вызова ConvertToList
!
Есть ли способ получить ее в виде строки из базы данных с помощью хранимой процедуры или преобразовать ее с помощью C # ASP.NET MVC?