Сопоставление методов CLR с каноническими функциями

Платформа Entity Framework предоставляет набор канонических функций, которые реализуют операции над строками, математические функции и другую общую функциональность для многих систем баз данных. Это позволяет разработчикам работать с широким кругом систем баз данных. При вызове из технологии запросов (например, из LINQ to Entities) канонические функции преобразуются в соответствующую функцию хранилища для используемого поставщика. Это позволяет для различных источников данных выражать вызовы функций в общей форме, обеспечивая согласованность при применении запросов. Битовые операторы AND, OR, NOT и XOR также сопоставляются с каноническими функциями, если операнд имеет числовой тип. Для операндов логического типа битовые операторы AND, OR, NOT и XOR вычисляют логические операции «И», «ИЛИ», «НЕ» и «Исключающее ИЛИ». Дополнительные сведения см. в разделе "Канонические функции".

Для сценариев LINQ запросы к платформе Entity Framework включают сопоставление определенных методов CLR с методами базового источника данных через канонические функции. Любой вызов метода в запросе LINQ to Entities, который явно не сопоставлен с канонической функцией, приведет к возникновению исключения времени выполнения NotSupportedException.

Метод System.String (статический) – сопоставление

Метод System.String (статический) Каноническая функция
System.String Concat(String str0, String str1) Concat(str0, str1)
System.String Concat(String str0, String str1, String str2) Concat(Concat(str0, str1), str2)
System.String Concat(String str0, String str1, String str2, String str03) Concat(Concat(Concat(str0, str1), str2), str3)
Boolean Equals(String a, String b) оператор =
Boolean IsNullOrEmpty(String value) (IsNull(value)) ИЛИ Length(value) = 0
Булево op_Equality(String a, String b) = оператор
Boolean op_Inequality(String a , String b) != — оператор
Microsoft.VisualBasic.Strings.Trim(String str) Trim(str)
Microsoft.VisualBasic.Strings.LTrim(String str) Ltrim(str)
Microsoft.VisualBasic.Strings.RTrim(String str) Rtrim(str)
Microsoft.VisualBasic.Strings.Len(String expression) Длина(expression)
Microsoft.VisualBasic.Strings.Left(String str, Int32 Length) Левый(str, Length)
Microsoft.VisualBasic.Strings.Mid(String str, Int32 Start, Int32 Length) Подстрока(str, Start, Length)
Microsoft.VisualBasic.Strings.Right(String str, Int32 Length) Справа(str, Length)
Microsoft.VisualBasic.Strings.UCase(String Value) ToUpper(Value)
Microsoft.VisualBasic.Strings.LCase(строковое значение) ToLower(Value)

Сопоставление метода System.String (метод экземпляра)

Метод System.String (экземпляр) Каноническая функция Примечания.
Boolean Contains(String value) this LIKE '%value%' Если value это не константа, то это сопоставляется с IndexOf(this, value) > 0
Boolean EndsWith(String value) this LIKE '%value' Если value не является константой, то он сопоставляется с Right(this, length(value)) = value.
Boolean StartsWith(String value) thisLIKE '%'value Если value не является константой, то это соответствует IndexOf(this, value) = 1.
Длина Длина(this)
Int32 IndexOf(String value) IndexOf(this, value) — 1
System.String Insert(Int32 startIndex, String value) Concat(Concat(Substring(this, 1, startIndex), value), Substring(this, startIndex+1, Length(this) - startIndex))
System.String Remove(Int32 startIndex) Подстрока(this, 1, startIndex)
System.String Remove(Int32 startIndex, Int32 count) Concat(Substring(this, 1, startIndex), Substring(this, startIndex + count +1, Length(this) - (startIndex + count))) Remove(startIndex, count) поддерживается, только если count - это неотрицательное целое число.
System.String Заменить(String oldValue, String newValue) Заменить(this, oldValue, newValue)
System.String.Substring(Int32 startIndex) Подстрока(this, startIndex +1, Length(this) - startIndex)
Подстрока System.String(Int32 startIndex, Int32 length) Подстрока(this, startIndex +1, length)
System.String ToLower() ToLower(this)
System.String ToUpper() ToUpper(this)
System.String Trim() - функция для обрезки пробелов в строке Trim(this)
System.String TrimEnd(Char[] trimChars) RTrim(this)
System.String TrimStart(Char[]trimChars) LTrim(this)
Boolean Equals(String value) = - оператор

Сопоставление метода System.DateTime (статический)

Метод System.DateTime (статический) Каноническая функция Примечания.
Boolean Equals(DateTime t1, DateTime t2) = - оператор
System.DateTime.Now CurrentDateTime()
System.DateTime.UtcNow CurrentUtcDateTime()
Логическая op_Equality(DateTime d1, DateTime d2) оператор =
Булев op_GreaterThan(DateTime t1, DateTime t2) Оператор >
Булево op_GreaterThanOrEqual(DateTime t1, DateTime t2) >Оператор =
Булевый op_Inequality(DateTime t1, DateTime t2) != - оператор
Булево op_LessThan(DateTime t1, DateTime t2) Оператор <
Булево op_LessThanOrEqual(DateTime t1, DateTime t2) <Оператор =
Microsoft.VisualBasic.DateAndTime.DatePart( _

ByVal Interval As DateInterval, _

ByVal DateValue As DateTime, _

Необязательный ByVal FirstDayOfWeekValue As FirstDayOfWeek = VbSunday, _

Необязательный ByVal FirstWeekOfYearValue As FirstWeekOfYear = VbFirstJan1 _

) Как целое число
Дополнительные сведения см. в разделе «Функция DatePart».
Microsoft.VisualBasic.DateAndTime.Now CurrentDateTime()
Microsoft.VisualBasic.DateAndTime.Year(DateTime TimeValue) Год()
Microsoft.VisualBasic.DateAndTime.Month(DateTime TimeValue) Месяц()
Microsoft.VisualBasic.DateAndTime.Day(DateTime TimeValue) День()
Microsoft.VisualBasic.DateAndTime.Hour(DateTime TimeValue) Час()
Microsoft.VisualBasic.DateAndTime.Minute(DateTime TimeValue) Минута()
Microsoft.VisualBasic.DateAndTime.Second(DateTime TimeValue) Second()

Отображение метода System.DateTime (экземпляр)

Метод System.DateTime (экземпляр) Каноническая функция
Boolean Equals(DateTime value) = - оператор
день День(this)
Час Час(this)
Миллисекунда Миллисекунда(this)
Минута Минута(this)
месяц Месяц(this)
Второй Секунда(this)
Год Год(this)

Сопоставление метода System.DateTimeOffset (метод экземпляра)

Сопоставление, выводимое для методов get с указанными свойствами.

Метод System.DateTimeOffset (экземпляр) Каноническая функция Примечания.
день День(this) Не поддерживается для SQL Server 2005.
Час Час(this) Не поддерживается для SQL Server 2005.
Миллисекунда Миллисекунда(this) Не поддерживается для SQL Server 2005.
Минута Минута(this) Не поддерживается для SQL Server 2005.
месяц Месяц(this) Не поддерживается для SQL Server 2005.
Второй Секунда(this) Не поддерживается для SQL Server 2005.
Год Год(this) Не поддерживается для SQL Server 2005.

Примечание.

Метод Equals возвращает значение true, если сравниваемые объекты DateTimeOffset равны, и значение false в противном случае. Метод CompareTo возвращает 0, 1 или -1 в зависимости от того, равен, больше или меньше сравниваемый объект DateTimeOffset.

Сопоставление метода System.DateTimeOffset (статический)

Сопоставление, выводимое для методов get с указанными свойствами.

Метод System.DateTimeOffset (статический) Каноническая функция Примечания.
System.DateTimeOffset.Now() CurrentDateTimeOffset() Не поддерживается для SQL Server 2005.

Сопоставление метода System.TimeSpan (экземпляр)

Сопоставление, выводимое для методов get с указанными свойствами.

Метод System.TimeSpan (экземпляр) Каноническая функция Примечания.
Часы Час(this) Не поддерживается для SQL Server 2005.
Миллисекунды Миллисекунда(this) Не поддерживается для SQL Server 2005.
Минуты Минута(this) Не поддерживается для SQL Server 2005.
секунды Секунда(this) Не поддерживается для SQL Server 2005.

Примечание.

Метод Equals возвращает значение true, если сравниваемые объекты TimeSpan равны, и значение false в противном случае. Метод CompareTo возвращает значение 0, 1 или -1 в зависимости от состояния объекта TimeSpan (соответственно равен, больше или меньше).

Функция DatePart

Функция DatePart сопоставляется с одной или несколькими каноническими функциями в зависимости от значения Interval. В следующей таблице приведено сопоставление канонических функций для поддерживаемых значений Interval.

Значение интервала Каноническая функция
ИнтервалДаты.Год Год()
DateInterval.Month Месяц()
ИнтервалДаты.День День()
ИнтервалДаты.Час Час()
DateInterval.Minute Минута()
ИнтервалВремени.Секунда Second()

Сопоставление математических функций

Метод CLR Каноническая функция
System.Decimal.Ceiling(Decimal d) Потолок(d)
System.Decimal.Floor(Decimal d) Floor(d)
System.Decimal.Round(Decimal d) Округлить(d)
System.Math.Ceiling(Decimal d) Потолок(d)
System.Math.Floor(Decimal d) Floor(d)
System.Math.Round(Decimal d) Округлить(d)
System.Math.Ceiling(Double a) (Метод который возвращает наименьшее целое число, большее или равное заданному десятичному числу) Потолок(a)
System.Math.Floor(Double a) Floor(a)
System.Math.Round(Double a) Округлить(a)
System.Math.Round(значение Double, количество знаков Int16) Round(значение, количество знаков)
System.Math.Round(значение Double, количество знаков Int32) Round(значение, количество знаков)
System.Math.Round(значение Decimal, количество знаков Int16) Round(значение, количество знаков)
System.Math.Round(значение Decimal, количество знаков Int32) Round(значение, количество знаков)
System.Math.Abs(значение Int16) Abs(значение)
System.Math.Abs(значение Int32) Abs(значение)
System.Math.Abs(Int64 value) Abs(значение)
System.Math.Abs(значение Byte) Abs(абсолютное значение)
System.Math.Abs(значение Single) Abs(значение)
System.Math.Abs(значение Double) Abs(значение)
System.Math.Abs(Decimal значение) Abs(значение)
System.Math.Truncate(значение Double, количество знаков Int16) Truncate(значение, количество знаков)
System.Math.Truncate(Double value, Int32 digits) Truncate(значение, количество знаков)
System.Math.Truncate(значение Decimal, количество знаков Int16) Обрезать(значение, количество знаков)
System.Math.Truncate(значение Decimal, количество знаков Int32) Truncate(значение, число цифр)
System.Math.Power(значение Int32, показатель степени Int64) Степень(число, показатель)
System.Math.Power(значение Int32, показатель степени Double) Power(значение, показатель степени)
System.Math.Power(значение Int32, показатель степени Decimal) Power(значение, показатель степени)
System.Math.Power(Int64 value, Int64 exponent) Power(значение, показатель степени)
System.Math.Power(значение Int64, показатель степени Double) Степень(значение, показатель)
System.Math.Power(значение Int64, показатель степени Decimal) Power(значение, показатель степени)
System.Math.Power(значение Double, экспонент Int64) Power(основание, показатель)
System.Math.Power(значение Double, показатель степени Double) Power(значение, степень)
System.Math.Power(Double value, Decimal exponent) Power(значение, показатель степени)
System.Math.Power(значение Decimal, показатель степени Int64) Power(значение, показатель степени)
System.Math.Power(значение Decimal, показатель степени Double) Power(значение, показатель степени)
System.Math.Power(значение Decimal, показатель степени Decimal) Power(значение, показатель степени)

Сопоставление побитовых операторов

Побитовый оператор Канонические функции для нелогических операндов Канонические функции для булевых операндов
Побитовый оператор AND BitWiseAnd op1 И op2
Побитовый оператор OR BitWiseOr op1 ИЛИ op2
Побитовый оператор NOT BitWiseNot НЕ(op)
Побитовый оператор XOR BitWiseXor ((op1 И НЕ(op2)) ИЛИ (НЕ(op1) И op2))

Другое сопоставление

Способ Каноническая функция
Guid.NewGuid() NewGuid()

См. также