Сопоставление методов 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)) OR Length(value) = 0
Boolean 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) Length(expression)
Microsoft.VisualBasic.Strings.Left(String str, Int32 Length) Left(str, Length)
Microsoft.VisualBasic.Strings.Mid(String str, Int32 Start, Int32 Length) Substring(str, Start, Length)
Microsoft.VisualBasic.Strings.Right(String str, Int32 Length) Right(str, Length)
Microsoft.VisualBasic.Strings.UCase(String Value) ToUpper(Value)
Microsoft.VisualBasic.Strings.LCase(String Value) 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) this LIKE 'value%' Если value не является константой, от он сопоставляется с IndexOf(this, value) = 1.
Length Length(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) Substring(this, 1, startIndex)
System.String Remove(Int32 startIndex, Int32 count) Concat(Substring(, 1, ) , Substring(thisthis,countstartIndex + +1, Length(this) - (startIndexcount + )) startIndex Remove(startIndex, count) поддерживается, только если count - это неотрицательное целое число.
System.String Replace(String oldValue, String newValue) Replace(this, oldValue, newValue)
System.String Substring(Int32 startIndex) Substring(this, startIndex +1, Length(this) - startIndex)
System.String Substring(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()
Boolean op_Equality(DateTime d1, DateTime d2) = - оператор
Boolean op_GreaterThan(DateTime t1, DateTime t2) Оператор >
Boolean op_GreaterThanOrEqual(DateTime t1, DateTime t2) >Оператор =
Boolean op_Inequality(DateTime t1, DateTime t2) != - оператор
Логические op_LessThan(DateTime, DateTime t1t2) Оператор <
Boolean 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 _

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

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

Метод System.DateTime (экземпляр) Каноническая функция
Boolean Equals(DateTime value) = - оператор
день Day(this)
Часы Hour(this)
Миллисекунда Millisecond(this)
Minute Minute(this)
месяц Month(this)
Second Second(this)
Year Year(this)

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

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

Метода System.DateTimeOffset (экземпляр) Каноническая функция Примечания.
день Day(this) Не поддерживается для SQL Server 2005.
Часы Hour(this) Не поддерживается для SQL Server 2005.
Миллисекунда Millisecond(this) Не поддерживается для SQL Server 2005.
Minute Minute(this) Не поддерживается для SQL Server 2005.
месяц Month(this) Не поддерживается для SQL Server 2005.
Second Second(this) Не поддерживается для SQL Server 2005.
Year Year(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 (экземпляр) Каноническая функция Примечания.
часов Hour(this) Не поддерживается для SQL Server 2005.
Миллисекунды Millisecond(this) Не поддерживается для SQL Server 2005.
Минуты Minute(this) Не поддерживается для SQL Server 2005.
сек. Second(this) Не поддерживается для SQL Server 2005.

Примечание.

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

Функция DatePart

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

Значение интервала Каноническая функция
DateInterval.Year Year()
DateInterval.Month Month()
DateInterval.Day Day()
DateInterval.Hour Hour()
DateInterval.Minute Minute()
DateInterval.Second Second()

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

Метод CLR Каноническая функция
System.Decimal.Ceiling(Decimal d) Ceiling(d)
System.Decimal.Floor(Decimal d) Floor(d)
System.Decimal.Round(Decimal d) Round(d)
System.Math.Ceiling(Decimal d) Ceiling(d)
System.Math.Floor(Decimal d) Floor(d)
System.Math.Round(Decimal d) Round(d)
System.Math.Ceiling(Double a) Ceiling(a)
System.Math.Floor(Double a) Floor(a)
System.Math.Round(Double a) Round(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) 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, количество знаков Int32) Truncate(значение, количество знаков)
System.Math.Truncate(значение Decimal, количество знаков Int16) Truncate(значение, количество знаков)
System.Math.Truncate(значение Decimal, количество знаков Int32) Truncate(значение, количество знаков)
System.Math.Power(значение Int32, показатель степени Int64) Power(значение, показатель степени)
System.Math.Power(значение Int32, показатель степени Double) Power(значение, показатель степени)
System.Math.Power(значение Int32, показатель степени Decimal) Power(значение, показатель степени)
System.Math.Power(значение Int64, показатель степени Int64) Power(значение, показатель степени)
System.Math.Power(значение Int64, показатель степени Double) Power(значение, показатель степени)
System.Math.Power(значение Int64, показатель степени Decimal) Power(значение, показатель степени)
System.Math.Power(значение Double, показатель степени Int64) Power(значение, показатель степени)
System.Math.Power(значение Double, показатель степени Double) Power(значение, показатель степени)
System.Math.Power(значение Double, показатель степени Decimal) Power(значение, показатель степени)
System.Math.Power(значение Decimal, показатель степени Int64) Power(значение, показатель степени)
System.Math.Power(значение Decimal, показатель степени Double) Power(значение, показатель степени)
System.Math.Power(значение Decimal, показатель степени Decimal) Power(значение, показатель степени)

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

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

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

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

См. также