Что такое LINQ и что он делает? [закрыто]

Согласно документации MSDN о триггерах INSTEAD OF DELETE:

Удаленная таблица, отправленная триггеру DELETE, содержит изображение строк, которое существовало до выдачи оператора DELETE.

Если я правильно ее понимаю, DELETE фактически выполняется. Что мне не хватает?

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

И я бы сказал, что использовал транзакцию, я не слышал раньше о триггерах INSTEAD OF.

119
задан informatik01 2 August 2018 в 14:19
поделиться

7 ответов

LINQ обозначает [1 119] Язык Интегрированный Запрос .

Вместо того, чтобы писать YAQL (еще один Язык запросов), разработчики языка Microsoft позволили выражать запросы непосредственно на их языках (таких как C# и Visual Basic). Методы для формирования этих запросов не полагаются на детали реализации запрашиваемой вещи, так, чтобы можно было записать допустимые запросы против многих целей (базы данных, объекты в оперативной памяти, XML) с практически никаким рассмотрением базового пути, которым будет выполняться запрос.

Позволяют нам запустить это исследование с частей, принадлежащих Платформе.NET (3.5).

  • LINQ К Объектам - исследуют Система. Linq. Счетный для методов запроса. Эти цель IEnumerable<T>, позволяя любому введенному loopable набору быть запрошенным безопасным с точки зрения типов способом. Эти запросы полагаются на скомпилированные методы.NET, не Выражения.

  • LINQ К Чему-либо - исследуют Система. Linq. Queryable для некоторых методов запроса. Эти предназначаются IQueryable<T>, позволяя конструкцию Деревьев выражений, которые могут быть переведены конкретной реализацией.

  • Деревья выражений - исследуют Система. Linq. Выражения пространство имен. Это - код как данные. На практике Вы должны знать об этом материале, но не должны действительно писать код против этих типов. Функции языка (такие как лямбда-выражения) могут позволить Вам использовать различные стенографии, чтобы не иметь дело с этими типами непосредственно.

  • LINQ К SQL - исследуют Система. Данные. Пространство имен Linq . Особенно отметьте DataContext. Это - технология DataAccess, созданная командой C#. Это просто работает.

  • LINQ К Объектам - исследуют Система. Данные. Объекты пространство имен. Особенно отметьте ObjectContext. Это - технология DataAccess, созданная командой ADO.NET. Это сложно, мощно, и тяжелее использовать, чем LINQ Для SQL.

  • LINQ К XML - исследуют Система. Xml. Пространство имен Linq . По существу люди не были удовлетворены материалом в System.Xml. Таким образом, Microsoft переписала его и использовала в своих интересах переписывание для представления некоторых методов, которые помогают использовать LINQ Для Объектов против XML.

  • Некоторые хорошие типы помощника, такой как [1 117] Func и Действие . Эти типы являются делегатами с Универсальной Поддержкой. Уведенный дни объявления Вашего собственного (и un-interchangable) типы делегата.

Все вышеупомянутое является частью Платформы.NET, и доступный с любого языка.NET (VB.NET, C#, IronPython, КОБОЛ.NET и т.д.).

<час>

хорошо, на функциях языка. Я собираюсь придерживаться C#, так как это - то, что я знаю лучше всего. VB.NET также имел несколько подобных улучшений (и пара этого, C# не добирался - литералы XML). Это - короткий и неполный список.

  • Дополнительные Методы - это позволяет Вам "добавлять" метод для ввода. Метод является действительно статическим методом, который передается экземпляр типа и ограничивается государственным контрактом типа, но он очень полезный для добавления методов к типам, которыми Вы не управляете (представляет в виде строки), или добавляющий (полностью реализованный) вспомогательные методы для интерфейсов.

  • Синтаксис Понимания Запроса - это позволяет Вам писать в SQL Как структура. Весь этот материал переводится в методы в Системе. Linq. Queryable или System. Linq. Счетный (в зависимости от Типа myCustomers). Это является абсолютно дополнительным, и можно использовать LINQ хорошо без него. Одно преимущество для этого стиля объявления запроса состоит в том, что переменные диапазона ограничены по объему: они не должны быть повторно объявлены для каждого пункта.

    IEnumerable<string> result =
     from c in myCustomers
     where c.Name.StartsWith("B")
     select c.Name;
    
  • Лямбда-выражения - Это - сокращение от определения метода. Компилятор C# переведет каждого или в анонимный метод или в истинное System.Linq.Expressions.Expression. Действительно необходимо понять их для использования Linq хорошо. Существует три части: список параметров, стрелка и тело метода.

    IEnumerable<string> result = myCustomers
     .Where(c => c.Name.StartsWith("B"))
     .Select(c => c.Name);`
    
  • Анонимные Типы - Иногда компилятор имеет достаточно информации для создания типа для Вас. Эти типы не являются действительно анонимными: компилятор называет их, когда он делает их. Но те имена сделаны во время компиляции, который является слишком опаздывающим разработчик для использования того имени во время проектирования.

    myCustomers.Select(c => new 
    {
      Name = c.Name;
      Age = c.Age;
    })
    
  • Неявные Типы - Иногда компилятор имеет достаточно информации от инициализации, что это может выяснить тип для Вас. Можно дать компилятору команду делать так при помощи ключевого слова var. Неявная типизация требуется, чтобы объявлять переменные для Анонимных Типов, так как программисты не могут использовать название анонимный тип.

    // The compiler will determine that names is an IEnumerable<string>
    var names = myCustomers.Select(c => c.Name);
    
163
ответ дан informatik01 2 August 2018 в 14:19
поделиться
  • 1
    Doesn' t работают с * (только при вводе открытого текста пароля в командную строку): сеть: Системная ошибка 1312 произошла. + CategoryInfo: NotSpecified: (Системная ошибка 1312 произошла.:String) [], RemoteException + FullyQualifiedErrorId: NativeCommandError указанная сессия входа в систему не существует. Это, возможно, уже было завершено. – brianary 23 April 2013 в 04:57

LINQ (Язык Интегрированный Запрос) может относиться к:

  • библиотека для набора и управления итератором, которое делает широкое применение из функций высшего порядка как аргументы (Система. Linq)

  • библиотека для передачи и управления простыми функциями как абстрактные синтаксические деревья (Система. Linq. Выражения)

  • расширение синтаксиса различных языков для обеспечения более подобного синтаксису SQL для обработки наборов, более компактной нотации для анонимных функций и механизма для представления статического помощника функционирует синтаксически неотличимое от заключительных функций членства

  • интерфейсное определение, которому могут соответствовать поставщики данных, чтобы получить структуру запроса и потенциально выполнить оптимизацию вслед за тем или иногда самих совместимых поставщиков данных

, компоненты могут использоваться в изоляции или объединяться.

14
ответ дан Jeffrey Hantin 2 August 2018 в 14:19
поделиться
  • 1
    хм.. это должна быть интерактивная подсказка из собственного консольного приложения (net.exe), который аварийно завершает удаленный сеанс. Интересно, аварийно завершает ли это также в powershell 3.0 - какую версию Вы тестировали? – x0n 23 April 2013 в 05:36

Короче говоря LINQ (Интегрированный Языком Запрос) позволяет Вам писать запросы непосредственно в Вашем коде. Те запросы могут быть на реляционных базах данных, но также и на XML или контейнерных объектах в оперативной памяти, таких как массивы и списки. Больше информации доступно в библиотеке MSDN: http://msdn.microsoft.com/en-us/library/bb308959.aspx

9
ответ дан Vojislav Stojkovic 2 August 2018 в 14:19
поделиться

Я собираюсь пробовать за простой ответ: LINQ является способом для Вас запросить Вашу базу данных (или другое хранилище данных, XML и т.д.) использование языка запросов, который подобен SQL, но может быть скомпилирован в приложении.NET.

6
ответ дан jcollum 2 August 2018 в 14:19
поделиться
  • 1
    Хороший, который выглядит многообещающим, I' ll скоро испытывают его. Спасибо за ссылку похоже, что это имеет много полезной информации. – Moskie 11 February 2010 в 03:04

LINQ обозначает Язык Интегрированный Запрос и является способом обеспечить механизм "запросов" общей цели в CLR.

В он - наиболее базовый уровень, это состоит из ряда методов на IEnumerable< T> - например, Выбор, Сумма, Где - который может использоваться для ограничений, проекций, и т.д. [1]

Для взятия его немного далее, LINQ также определяет новую модель поставщика LINQ, которая может взять дерево выражений и использовать его для выполнения "собственных" запросов против источника данных за пределами CLR - например, LINQ к SQL, LINQ к XML, LINQ к NHibernate, и т.д.

, C# и VB.NET также определили синтаксис запроса, который позволяет Вам писать встроенные запросы со строгим контролем типов (который выглядит очень похожим на SQL), который компилятор затем переводит в эквивалентный IEnumerable< T> вызовы.

мне, самой интересной вещью о LINQ являются все функции C# и VB.NET, которые были необходимы для поддержки его, полезны самостоятельно. Дополнительные методы, анонимные типы, лямбда-выражения и неявная типизация все требовались поддерживать LINQ - но мы склонны использовать те функции за пределами чистого контекста LINQ.

[1] Это - реляционные условия, функциональные программисты, вероятно, предпочли бы Карту, Уменьшили бы, Сгиб, и т.д.

6
ответ дан Mark Brackett 2 August 2018 в 14:19
поделиться
  • 1
    Мм о, плохие новости. Согласно инструкциям там, я выполнил эту команду на удаленном сервере: включите-WSManCredSSP †“Ролевой Сервер. Это генерировало эту ошибку: включите-WSManCredSSP: Этот Powershell cmdlet не доступен на следующих платформах: Windows XP и Windows Server 2003. (it' s рабочий Server 2003) – Moskie 11 February 2010 в 03:12

LINQ является технологией для извлечения данных с помощью идиомы, полученной из языка программирования C#. В то время как это должно очень в функциональном проекте к SQL, это - существенно свой собственный язык запросов данных. Это работает через широкий спектр источников данных (Базы данных SQL, представления в оперативной памяти, XML, и т.д.). LINQ-SQL, в частности, должен рассматриваться как контраст по отношению к традиционному использованию встроенного SQL, который страдает от того, что часто упоминается как "несоответствие импеданса" между программированием SQL и программированием C#/VB.

Для обсуждения LINQ и его ограничений, можно хотеть смотреть на этот связанный вопрос: Doesn’t LINQ к SQL упускают суть?

5
ответ дан Community 2 August 2018 в 14:19
поделиться

http://msdn.microsoft.com/en-us/netframework/aa904594.aspx

"Проект LINQ является кодовым названием ряда расширений Платформы.NET, которые охватывают интегрированный языком запрос, устанавливают и преобразовывают операции. Это расширяет C# и Visual Basic с синтаксисом родного языка для запросов и обеспечивает библиотеки классов для использования в своих интересах этих возможностей".

0
ответ дан Jobo 2 August 2018 в 14:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: