powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Не пойму как интепретировать сообщение об ошибке в запросе
17 сообщений из 17, страница 1 из 1
Не пойму как интепретировать сообщение об ошибке в запросе
    #38924822
ValGer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Использую LINQ to SQL Составляю простейший запрос, а он при прогоне выдаёт что-то непотребное (см. рисунок). В чём причина?
Вроде раньше составлял нечто аналогичное и проблем не было. Может что с базой? (Это Борей, аналог Northwind)
...
Рейтинг: 0 / 0
Не пойму как интепретировать сообщение об ошибке в запросе
    #38924833
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
var q = (from x in db.GetTable<Клиенты>() select new Клиенты {...}).ToList();
...
Рейтинг: 0 / 0
Не пойму как интепретировать сообщение об ошибке в запросе
    #38924861
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValGer, явное конструирование entity объекта может позже создать проблемы если их приаттачить к контексту и сохранить изменения. Чтобы люди не наступали на такие грабли это запрещено. Используй анононимый объект или свой тип.
Код: c#
1.
var clientsList = db.GetTable<Клиенты>().Select(c => new { c.КодКлиента, c.Название, c.Город, c.Адрес).ToList();


Или создай отдельный mapping для таблицы Клиенты только с этими четырьмя колонками.
...
Рейтинг: 0 / 0
Не пойму как интепретировать сообщение об ошибке в запросе
    #38924875
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleron
Код: c#
1.
var q = (from x in db.GetTable<Клиенты>() select new Клиенты {...}).ToList();



Правильное решение проблемы озвучено bazile
...
Рейтинг: 0 / 0
Не пойму как интепретировать сообщение об ошибке в запросе
    #38924931
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttПравильное решение проблемы озвучено bazile
Согласен
...
Рейтинг: 0 / 0
Не пойму как интепретировать сообщение об ошибке в запросе
    #38925069
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя лучшая практика - сразу мапить объект, используя DTO патерн.
...
Рейтинг: 0 / 0
Не пойму как интепретировать сообщение об ошибке в запросе
    #38925074
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronХотя лучшая практика - сразу мапить объект, используя DTO патерн.

Угу, использовать проекции и AutoMaper Project().To<T>()
...
Рейтинг: 0 / 0
Не пойму как интепретировать сообщение об ошибке в запросе
    #38925085
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttAxeleronХотя лучшая практика - сразу мапить объект, используя DTO патерн.

Угу, использовать проекции и AutoMaper Project().To<T>()
Это уже частности. Можно аутомапер, а можно и рукомапер.
...
Рейтинг: 0 / 0
Не пойму как интепретировать сообщение об ошибке в запросе
    #38925129
ValGer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleron
Код: c#
1.
var q = (from x in db.GetTable<Клиенты>() select new Клиенты {...}).ToList();


Это не "катит".

Я о другом: как понять выдаваемое сообщение? Всё вроде бы правильно, а выдаётся такая "хрень".
Я ещё почему привязываюсь к этому, а не к цепочному варианту запроса. Дело в том, что в перспективе необходимо соединять несколько таблиц и я знаю как это сделать с их неограниченным количеством. В цепочечном варианте (<--->.<--->.<----> и так далее) это вроде бы то же можно сделать, но как - абсолютно непонятно. Примеров не встречалось.
...
Рейтинг: 0 / 0
Не пойму как интепретировать сообщение об ошибке в запросе
    #38925156
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValGer,
Использовать Join'ы
...
Рейтинг: 0 / 0
Не пойму как интепретировать сообщение об ошибке в запросе
    #38925224
ValGer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleron,

Ну понял в чём дело и "где собака зарыта". Просто нельзя напрямую работать с типами таблиц определённых в dbml-файле. Нужно этот тип просто повторить в отдельном классе. Об этом и говорит (хотя и извилисто) сообщение - сразу понять его трудно. Привожу код

Класс - дубль таблицы "Клиенты"
public class Client
{
public string КодКлиента { get; set; }
public string Название { get; set; }
//.................................
public string Факс { get; set; }
}

Код запроса
static void Main(string[] args)
{
BoreiDBDataContext db = new BoreiDBDataContext(); // База Борей (LINQ to SQL)
List< Client > clientsList = new List< Client >();
var q = from п in db.GetTable<Клиенты>() // Отсюда получаем (БД)
select new Client
{
// Сюда кладём ( Client )
КодКлиента = п.КодКлиента,
Название = п.Название,
//ОбращатьсяК = п.ОбращатьсяК,
//Должность = п.Должность,
//Адрес = п.Адрес,
//Город = п.Город,
//Область = п.Область,
//Индекс = п.Индекс,
//Страна = п.Страна,
//Телефон = п.Телефон,
Факс=п.Факс
};

foreach (var k in q)
{
clientsList.Add(( Client )k);
};

Console.ReadKey();
}
}

Теперь всё работает!
...
Рейтинг: 0 / 0
Не пойму как интепретировать сообщение об ошибке в запросе
    #38925249
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Не пойму как интепретировать сообщение об ошибке в запросе
    #38925272
ValGer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro Как мне оформить свое сообщение?

Спасибо большое, а то действительно читается не очень ... Запишу эту памятку себе.
...
Рейтинг: 0 / 0
Не пойму как интепретировать сообщение об ошибке в запросе
    #38939791
ValGer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValGerИспользую LINQ to SQL Составляю простейший запрос, а он при прогоне выдаёт что-то непотребное (см. рисунок). В чём причина?
Вроде раньше составлял нечто аналогичное и проблем не было. Может что с базой? (Это Борей, аналог Northwind)

Докопался я до причины - "ларчик, как всегда открывался просто". Просто GetTable<Тип>() нужно преобразовать к типу IEnumerable<Тип> и тогда всё проходит без ошибок выполнения.

Код: c#
1.
2.
3.
4.
5.
var qClients = from xClient in db.GetTable<Клиенты>().[color=red]AsEnumerable<Клиенты>()[/color]                           select new Клиенты
              {
                       КодКлиента=xClient.КодКлиента,
                       Название=xClient.Название
              };
...
Рейтинг: 0 / 0
Не пойму как интепретировать сообщение об ошибке в запросе
    #38939821
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValGer, не надо так делать ( 17463754 ). Используй анонимный тип или создай свой класс с нужными полями.
...
Рейтинг: 0 / 0
Не пойму как интепретировать сообщение об ошибке в запросе
    #38950197
ValGer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bazileValGer, не надо так делать ( 17463754 ). Используй анонимный тип или создай свой класс с нужными полями.

В общих словах о причинах, пожалуйста?
...
Рейтинг: 0 / 0
Не пойму как интепретировать сообщение об ошибке в запросе
    #38950220
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValGer, в общих словах я тебе уже ответил .
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Не пойму как интепретировать сообщение об ошибке в запросе
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]