Сопоставление методов CLR каноническим функциям
Платформа Entity Framework предоставляет набор канонических функций, которые реализуют операции над строками, математические функции и другую общую функциональность для многих систем баз данных. Это позволяет разработчикам работать с широким кругом систем баз данных. При вызове из технологии запросов (например, из LINQ to Entities) канонические функции преобразуются в соответствующую функцию хранилища для используемого поставщика. Это позволяет для различных источников данных выражать вызовы функций в общей форме, обеспечивая согласованность при применении запросов. Битовые операторы AND, OR, NOT и XOR также сопоставляются с каноническими функциями, если операнд имеет числовой тип. Для операндов логического типа битовые операторы AND, OR, NOT и XOR выполняют логические операции «И», «ИЛИ», «НЕ» и «Исключающее ИЛИ». Дополнительные сведения см. в разделе Канонические функции (язык Entity SQL).
Для сценариев 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(this, 1, startIndex) , Substring(this, startIndex + count +1, Length(this) - (startIndex + count))) |
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) |
Substring(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) |
оператор != |
|
Boolean op_LessThan(DateTime t1, DateTime t2) |
оператор < |
|
Boolean op_LessThanOrEqual(DateTime t1, DateTime t2) |
< оператор = |
|
Microsoft.VisualBasic.DateAndTime.DatePart( _ ByVal Interval As DateInterval, _ ByVal DateValue As DateTime, _ Optional ByVal FirstDayOfWeekValue As FirstDayOfWeek = VbSunday, _ Optional 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 |
Day(this) |
Hour |
Hour(this) |
Millisecond |
Millisecond(this) |
Minute |
Minute(this) |
Month |
Month(this) |
Second |
Second(this) |
Year |
Year(this) |
Сопоставление метода System.DateTimeOffset (экземпляр)
Сопоставление, выводимое для методов get с указанными свойствами.
Метода System.DateTimeOffset (экземпляр) | Каноническая функция | Примечания |
---|---|---|
Day |
Day(this) |
Не поддерживается для SQL Server 2005. |
Hour |
Hour(this) |
Не поддерживается для SQL Server 2005. |
Millisecond |
Millisecond(this) |
Не поддерживается для SQL Server 2005. |
Minute |
Minute(this) |
Не поддерживается для SQL Server 2005. |
Month |
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 (экземпляр) | Каноническая функция | Примечания |
---|---|---|
Hours |
Hour(this) |
Не поддерживается для SQL Server 2005. |
Milliseconds |
Millisecond(this) |
Не поддерживается для SQL Server 2005. |
Minutes |
Minute(this) |
Не поддерживается для SQL Server 2005. |
Seconds |
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() |