Сопоставление методов 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(this this ,count startIndex + +1, Length(this ) - (startIndex count + )) 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 t1 t2 ) |
Оператор < | |
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(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(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() |