Привіт, у мене є завдання MySQL і LINQ to SQL для перетворення значення Int з БД в Рядок, toString () не підтримується MySql, і я отримую про це помилку.
var data = (from o in ObjectContext.MyTable.Where(d => d.a == a)
select new MyObject
{
Id = o.Id,
StringProperty = o.intColumn.ToString()
});
Клас SqlFunction не підтримується для MySql.
Відповіді:
1 для відповіді № 1Ви можете спробувати перетворити результати на Enumerable, а потім здійснити запит щодо нього:
var data = (from o in ObjectContext.MyTable.AsEnumerable().Where(d => d.a == a)
select new MyObject
{
Id = o.Id,
StringProperty = o.intColumn.ToString()
});
0 для відповіді № 2
Ви можете отримати всі дані, додавши AsEnumerable()
до таблиці, або ви можете зробити вибірку спочатку, а потім перетворення пізніше - якщо я не помиляюся, це повинно дати трохи легший виклик SQL:
var tempData = (from o in ObjectContext.Where(d => d.a == a) select o);
var converted = (from o in tempData.AsEnumerable()
select new MyObject
{
Id = o.Id,
StringProperty = o.intColumn.ToString()
});
Як варіант, напишіть все за один раз, використовуючи першу частину як підзапит:
var data = from x in
(from o in ObjectContext.Where(d => d.a == a) select o)
.AsEnumerable()
select new MyObject
{
Id = x.Id,
StringProperty = x.intColumn.ToString()
});
0 для відповіді № 3
int до рядка в Entity Framework також підтримав чудове рішення, на яке ви можете звернутися. За допомогою цього методу ви можете змінити джерело наступним чином.
var data = (from o in ObjectContext.MyTable.Where(d => d.a == a)
select new MyObject
{
Id = o.Id,
StringProperty = SqlFunctions.StringConvert((double)o.intColumn)
});