Переписывание LINQ to SQL - PullRequest
       2

Переписывание LINQ to SQL

0 голосов
/ 20 декабря 2018

У меня есть запрос LINQ, который мне нужно переписать в TSQL, чтобы понять, почему он тянет дубликаты данных.Однако на самом деле я не могу запустить код, поэтому я должен сделать это, просто посмотрев на LINQ.

Поскольку вы можете использовать JOIN в LINQ, я не уверен, что происходит с этими 2ОТ.

Когда я пытаюсь написать запрос для извлечения этих данных, я не получаю никаких дубликатов - однако при выполнении кода происходит сбой при вызове SingleOrDefault для дублированных данных.

var myQ = from T in context.TableModels
          .Where(T => T.ID == 'ID')
        from C in context.ChairModels
         .Where(C => C.TableID == T.ID && C.TableKey == T.TableKey)
       .DefaultIfEmpty()
    select new
     {
       ...
      };

SingleOrDefault вызывается в другом месте и использует клавишу для выбора 1 записи.Этот ключ хранится в базе данных только 1 раз, но SingleOrDEfault не работает, поскольку возвращено более 1 элемента.

1 Ответ

0 голосов
/ 20 декабря 2018

SingleOrDefault() не имеет ничего общего с дублирующимися данными.Его цель - получить только результат запроса, и он выбрасывает исключение, он получает более одной строки (дубликат или нет).

Помните, что при выполнении объединенияесли в объединенной таблице есть две совпадающие записи, вы получите несколько строк с дублированием данных из первичной таблицы.Так что в этом случае в таблице ChairModels может быть несколько строк, в которых C.TableID == T.ID && C.TableKey == T.TableKey.

Если вы хотите увидеть полученный SQL, см. здесь , чтобы узнать, как вывестиSQL к окну отладки в Visual Studio.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...