CLR メソッドと正規関数とのマッピングCLR Method to Canonical Function Mapping

Entity Framework は、文字列操作、数学関数などの多くのデータベース システム間で共通の機能を実装する正規関数のセットを提供します。The Entity Framework provides a set of canonical functions that implement functionality that is common across many database systems, such as string manipulation and mathematical functions. この関数により、開発者は広範なデータベース システムをターゲットとして指定することができます。This enables developers to target a broad range of database systems. LINQ to Entities などのクエリ テクノロジから呼び出されると、これらの正規関数は使用されているプロバイダーに対応した正しい格納関数に変換されます。When called from a querying technology, such as LINQ to Entities, these canonical functions are translated to the correct corresponding store function for the provider being used. これにより、関数の呼び出しをデータ ソース間で共通の形式で表すことができ、データ ソース間に一貫した方法でクエリを利用できます。This allows function invocations to be expressed in a common form across data sources, providing a consistent query experience across data sources. オペランドが数値型である場合は、ビット単位の AND、OR、NOT、および XOR 演算子も正規関数にマップされます。The bitwise AND, OR, NOT, and XOR operators are also mapped to canonical functions when the operand is a numeric type. ブール型のオペランドの場合、ビット単位の AND、OR、NOT、および XOR 演算子は、それぞれのオペランドの論理 AND、OR、NOT、および XOR 演算を計算します。For Boolean operands, the bitwise AND, OR, NOT, and XOR operators compute the logical AND, OR, NOT, and XOR operations of their operands. 詳細については、次を参照してください。正規関数します。For more information, see Canonical Functions.

LINQ シナリオの場合、Entity Framework に対するクエリでは、正規関数による、基になるデータ ソース上のメソッドへの特定の CLR メソッドのマッピングも行われます。For LINQ scenarios, queries against the Entity Framework involve mapping certain CLR methods to methods on the underlying data source through canonical functions. 正規関数に明示的にマップされない LINQ to Entities クエリで任意のメソッドの呼び出しが実行されると、ランタイムの NotSupportedException 例外がスローされます。Any method calls in a LINQ to Entities query that are not explicitly mapped to a canonical function will result in a runtime NotSupportedException exception being thrown.

System.String メソッド (静的) のマッピングSystem.String Method (Static) Mapping

System.String メソッド (静的)System.String method (static) 正規関数Canonical function
System.String Concat(String str0, String str1)System.String Concat(String str0, String str1) Concat(str0, str1)Concat(str0, str1)
System.String Concat(String str0, String str1, String str2)System.String Concat(String str0, String str1, String str2) Concat(Concat(str0, str1), str2)Concat(Concat(str0, str1), str2)
System.String Concat(String str0, String str1, String str2, String str03)System.String Concat(String str0, String str1, String str2, String str03) Concat(Concat(Concat(str0, str1), str2), str3)Concat(Concat(Concat(str0, str1), str2), str3)
Boolean Equals(String a, String b)Boolean Equals(String a, String b) = 演算子= operator
Boolean IsNullOrEmpty(String value)Boolean IsNullOrEmpty(String value) (IsNull(value)) OR Length(value) = 0(IsNull(value)) OR Length(value) = 0
Boolean op_Equality(String a, String b)Boolean op_Equality(String a, String b) = 演算子= operator
Boolean op_Inequality(String a , String b)Boolean op_Inequality(String a , String b) != 演算子!= operator
Microsoft.VisualBasic.Strings.Trim(String str)Microsoft.VisualBasic.Strings.Trim(String str) Trim(str)Trim(str)
Microsoft.VisualBasic.Strings.LTrim(String str)Microsoft.VisualBasic.Strings.LTrim(String str) Ltrim(str)Ltrim(str)
Microsoft.VisualBasic.Strings.RTrim(String str)Microsoft.VisualBasic.Strings.RTrim(String str) Rtrim(str)Rtrim(str)
Microsoft.VisualBasic.Strings.Len(String expression)Microsoft.VisualBasic.Strings.Len(String expression) Length(expression)Length(expression)
Microsoft.VisualBasic.Strings.Left(String str, Int32 Length)Microsoft.VisualBasic.Strings.Left(String str, Int32 Length) Left(str, Length)Left(str, Length)
Microsoft.VisualBasic.Strings.Mid(String str, Int32 Start, Int32 Length)Microsoft.VisualBasic.Strings.Mid(String str, Int32 Start, Int32 Length) Substring(str, Start, Length)Substring(str, Start, Length)
Microsoft.VisualBasic.Strings.Right(String str, Int32 Length)Microsoft.VisualBasic.Strings.Right(String str, Int32 Length) Right(str, Length)Right(str, Length)
Microsoft.VisualBasic.Strings.UCase(String Value)Microsoft.VisualBasic.Strings.UCase(String Value) ToUpper(Value)ToUpper(Value)
Microsoft.VisualBasic.Strings.LCase(String Value)Microsoft.VisualBasic.Strings.LCase(String Value) ToLower(Value)ToLower(Value)

System.String メソッド (インスタンス) のマッピングSystem.String Method (Instance) Mapping

System.String メソッド (インスタンス)System.String method (instance) 正規関数Canonical function メモNotes
Boolean Contains(String value)Boolean Contains(String value) this LIKE '%value%'this LIKE '%value%' value が定数ではない場合、IndexOf(this, value) > 0 にマップされます。If value is not a constant, then this maps to IndexOf(this, value) > 0
Boolean EndsWith(String value)Boolean EndsWith(String value) this ような' % value'this LIKE '%value' value が定数ではない場合、Right(this, length(value)) = value にマップされます。If value is not a constant, then this maps to Right(this, length(value)) = value.
Boolean StartsWith(String value)Boolean StartsWith(String value) this LIKE 'value%'this LIKE 'value%' value が定数ではない場合、IndexOf(this, value) = 1 にマップされます。If value is not a constant, then this maps to IndexOf(this, value) = 1.
長さLength Length(this)Length(this)
Int32 IndexOf(String value)Int32 IndexOf(String value) IndexOf(this, value) - 1IndexOf(this, value) - 1
System.String Insert(Int32 startIndex, String value)System.String Insert(Int32 startIndex, String value) Concat(Concat(Substring(this, 1, startIndex), value), Substring(this, startIndex+1, Length(this) - startIndex))Concat(Concat(Substring(this, 1, startIndex), value), Substring(this, startIndex+1, Length(this) - startIndex))
System.String Remove(Int32 startIndex)System.String Remove(Int32 startIndex) Substring(this, 1, startIndex)Substring(this, 1, startIndex)
System.String Remove(Int32 startIndex, Int32 count)System.String Remove(Int32 startIndex, Int32 count) Concat(Substring(this, 1, startIndex) , Substring(this, startIndex + count +1, Length(this) - (startIndex + count)))Concat(Substring(this, 1, startIndex) , Substring(this, startIndex + count +1, Length(this) - (startIndex + count))) startIndex が 0 以上の整数である場合、サポートされるのは Remove(count, count) だけです。Remove(startIndex, count) is only supported if count is an integer greater than or equal to 0.
System.String Replace(String oldValue, String newValue)System.String Replace(String oldValue, String newValue) Replace(this, oldValue, newValue)Replace(this, oldValue, newValue)
System.String Substring(Int32 startIndex)System.String Substring(Int32 startIndex) Substring(this, startIndex +1, Length(this) - startIndex)Substring(this, startIndex +1, Length(this) - startIndex)
System.String Substring(Int32 startIndex, Int32 length)System.String Substring(Int32 startIndex, Int32 length) 部分文字列 (thisstartIndex +1、 length)Substring(this, startIndex +1, length)
System.String ToLower()System.String ToLower() ToLower(this)ToLower(this)
System.String ToUpper()System.String ToUpper() ToUpper(this)ToUpper(this)
System.String Trim()System.String Trim() Trim(this)Trim(this)
System.String TrimEnd(Char[] trimChars)System.String TrimEnd(Char[] trimChars) RTrim(this)RTrim(this)
System.String TrimStart(Char[]trimChars)System.String TrimStart(Char[]trimChars) LTrim(this)LTrim(this)
Boolean Equals(String value)Boolean Equals(String value) = 演算子= operator

System.DateTime メソッド (静的) のマッピングSystem.DateTime Method (Static) Mapping

System.DateTime メソッド (静的)System.DateTime method (static) 正規関数Canonical function メモNotes
Boolean Equals(DateTime t1, DateTime t2)Boolean Equals(DateTime t1, DateTime t2) = 演算子= operator
System.DateTime.NowSystem.DateTime.Now CurrentDateTime()CurrentDateTime()
System.DateTime.UtcNowSystem.DateTime.UtcNow CurrentUtcDateTime()CurrentUtcDateTime()
Boolean op_Equality(DateTime d1, DateTime d2)Boolean op_Equality(DateTime d1, DateTime d2) = 演算子= operator
Boolean op_GreaterThan(DateTime t1, DateTime t2)Boolean op_GreaterThan(DateTime t1, DateTime t2) > 演算子> operator
Boolean op_GreaterThanOrEqual(DateTime t1, DateTime t2)Boolean op_GreaterThanOrEqual(DateTime t1, DateTime t2) >= 演算子>= operator
Boolean op_Inequality(DateTime t1, DateTime t2)Boolean op_Inequality(DateTime t1, DateTime t2) != 演算子!= operator
ブール op_LessThan (DateTime t1、DateTime t2)Boolean op_LessThan(DateTime t1, DateTime t2) < 演算子< operator
Boolean op_LessThanOrEqual(DateTime t1, DateTime t2)Boolean op_LessThanOrEqual(DateTime t1, DateTime t2) <= 演算子<= operator
Microsoft.VisualBasic.DateAndTime.DatePart( _Microsoft.VisualBasic.DateAndTime.DatePart( _

ByVal Interval DateInterval、として _ByVal Interval As DateInterval, _

ByVal DateValue 、DateTime として _ByVal DateValue As DateTime, _

省略可能な ByVal FirstDayOfWeekValue FirstDayOfWeek として、曜日を = _Optional ByVal FirstDayOfWeekValue As FirstDayOfWeek = VbSunday, _

省略可能な ByVal FirstWeekOfYearValue < として VbFirstJan1 を = _Optional ByVal FirstWeekOfYearValue As FirstWeekOfYear = VbFirstJan1 _

) As Integer) As Integer
詳細については、「DatePart 関数」を参照してください。See the DatePart Function section for more information.
Microsoft.VisualBasic.DateAndTime.NowMicrosoft.VisualBasic.DateAndTime.Now CurrentDateTime()CurrentDateTime()
Microsoft.VisualBasic.DateAndTime.Year(DateTime TimeValue)Microsoft.VisualBasic.DateAndTime.Year(DateTime TimeValue) Year()Year()
Microsoft.VisualBasic.DateAndTime.Month(DateTime TimeValue)Microsoft.VisualBasic.DateAndTime.Month(DateTime TimeValue) Month()Month()
Microsoft.VisualBasic.DateAndTime.Day(DateTime TimeValue)Microsoft.VisualBasic.DateAndTime.Day(DateTime TimeValue) Day()Day()
Microsoft.VisualBasic.DateAndTime.Hour(DateTime TimeValue)Microsoft.VisualBasic.DateAndTime.Hour(DateTime TimeValue) Hour()Hour()
Microsoft.VisualBasic.DateAndTime.Minute(DateTime TimeValue)Microsoft.VisualBasic.DateAndTime.Minute(DateTime TimeValue) Minute()Minute()
Microsoft.VisualBasic.DateAndTime.Second(DateTime TimeValue)Microsoft.VisualBasic.DateAndTime.Second(DateTime TimeValue) Second()Second()

System.DateTime メソッド (インスタンス) のマッピングSystem.DateTime Method (Instance) Mapping

System.DateTime メソッド (インスタンス)System.DateTime method (instance) 正規関数Canonical function
Boolean Equals(DateTime value)Boolean Equals(DateTime value) = 演算子= operator
DayDay Day(this)Day(this)
HourHour Hour(this)Hour(this)
MillisecondMillisecond Millisecond(this)Millisecond(this)
MinuteMinute Minute(this)Minute(this)
Month Month(this)Month(this)
SecondSecond Second(this)Second(this)
YearYear Year(this)Year(this)

System.DateTimeOffset メソッド (インスタンス) のマッピングSystem.DateTimeOffset Method (Instance) Mapping

示されているプロパティに対する get メソッドのマッピングを示します。The mapping shown for the get methods on the listed properties.

System.DateTimeOffset メソッド (インスタンス)System.DateTimeOffset method (instance) 正規関数Canonical function メモNotes
DayDay Day(this)Day(this) SQL Server 2005 ではサポートされません。Not supported against SQL Server 2005.
HourHour Hour(this)Hour(this) SQL Server 2005 ではサポートされません。Not supported against SQL Server 2005.
MillisecondMillisecond Millisecond(this)Millisecond(this) SQL Server 2005 ではサポートされません。Not supported against SQL Server 2005.
MinuteMinute Minute(this)Minute(this) SQL Server 2005 ではサポートされません。Not supported against SQL Server 2005.
Month Month(this)Month(this) SQL Server 2005 ではサポートされません。Not supported against SQL Server 2005.
SecondSecond Second(this)Second(this) SQL Server 2005 ではサポートされません。Not supported against SQL Server 2005.
YearYear Year(this)Year(this) SQL Server 2005 ではサポートされません。Not supported against SQL Server 2005.

注意

比較した Equals オブジェクトが等しい場合、true メソッドは DateTimeOffset を返します。それ以外の場合は false を返します。The Equals method returns true if the compared DateTimeOffset objects are equal; false otherwise. 比較した CompareTo オブジェクトが等しい、より大きい、またはより小さい場合、DateTimeOffset メソッドはそれぞれ 0、1、または -1 を返します。The CompareTo method returns 0, 1, or -1 depending on whether the compared DateTimeOffset object is equal, greater than, or less than, respectively.

System.DateTimeOffset メソッド (静的) のマッピングSystem.DateTimeOffset Method (Static) Mapping

示されているプロパティに対する get メソッドのマッピングを示します。The mapping shown for the get methods on the listed properties.

System.DateTimeOffset メソッド (静的)System.DateTimeOffset method (static) 正規関数Canonical function メモNotes
System.DateTimeOffset.Now()System.DateTimeOffset.Now() CurrentDateTimeOffset()CurrentDateTimeOffset() SQL Server 2005 ではサポートされません。Not supported against SQL Server 2005.

System.TimeSpan メソッド (インスタンス) のマッピングSystem.TimeSpan Method (Instance) Mapping

示されているプロパティに対する get メソッドのマッピングを示します。The mapping shown for the get methods on the listed properties.

System.TimeSpan メソッド (インスタンス)System.TimeSpan method (instance) 正規関数Canonical function メモNotes
時間Hours Hour(this)Hour(this) SQL Server 2005 ではサポートされません。Not supported against SQL Server 2005.
MillisecondsMilliseconds Millisecond(this)Millisecond(this) SQL Server 2005 ではサポートされません。Not supported against SQL Server 2005.
Minutes Minute(this)Minute(this) SQL Server 2005 ではサポートされません。Not supported against SQL Server 2005.
SecondsSeconds Second(this)Second(this) SQL Server 2005 ではサポートされません。Not supported against SQL Server 2005.

注意

比較した Equals オブジェクトが等しい場合、true メソッドは TimeSpan を返します。それ以外の場合は false を返します。The Equals method returns true if the compared TimeSpan objects are equal; false otherwise. 比較した CompareTo オブジェクトが等しい、より大きい、またはより小さい場合、TimeSpan メソッドはそれぞれ 0、1、または -1 を返します。The CompareTo method returns 0, 1, or -1 depending on whether the compared TimeSpan object is equal, greater than, or less than, respectively.

DatePart 関数DatePart Function

DatePart 関数は、Interval の値に応じて、複数の異なる正規関数のいずれかにマップされます。The DatePart Function is mapped to one of several different canonical functions, depending on the value of Interval. サポートされている各 Interval 値に対応する正規関数のマッピングを次の表に示します。The following table displays the canonical function mapping for the supported values of Interval:

Interval 値Interval value 正規関数Canonical function
DateInterval.YearDateInterval.Year Year()Year()
DateInterval.MonthDateInterval.Month Month()Month()
DateInterval.DayDateInterval.Day Day()Day()
DateInterval.HourDateInterval.Hour Hour()Hour()
DateInterval.MinuteDateInterval.Minute Minute()Minute()
DateInterval.SecondDateInterval.Second Second()Second()

数学関数のマッピングMathematical Function Mapping

CLR メソッドCLR method 正規関数Canonical function
System.Decimal.Ceiling(Decimal d)System.Decimal.Ceiling(Decimal d) Ceiling(d)Ceiling(d)
System.Decimal.Floor(Decimal d)System.Decimal.Floor(Decimal d) Floor(d)Floor(d)
System.Decimal.Round(Decimal d)System.Decimal.Round(Decimal d) Round(d)Round(d)
System.Math.Ceiling(Decimal d)System.Math.Ceiling(Decimal d) Ceiling(d)Ceiling(d)
System.Math.Floor(Decimal d)System.Math.Floor(Decimal d) Floor(d)Floor(d)
System.Math.Round(Decimal d)System.Math.Round(Decimal d) Round(d)Round(d)
System.Math.Ceiling(Double a)System.Math.Ceiling(Double a) Ceiling(a)Ceiling(a)
System.Math.Floor(Double a)System.Math.Floor(Double a) Floor(a)Floor(a)
System.Math.Round(Double a)System.Math.Round(Double a) Round(a)Round(a)
System.Math.Round(Double value, Int16 digits)System.Math.Round(Double value, Int16 digits) Round(value, digits)Round(value, digits)
System.Math.Round(Double value, Int32 digits)System.Math.Round(Double value, Int32 digits) Round(value, digits)Round(value, digits)
System.Math.Round(Decimal value, Int16 digits)System.Math.Round(Decimal value, Int16 digits) Round(value, digits)Round(value, digits)
System.Math.Round(Decimal value, Int32, digits)System.Math.Round(Decimal value, Int32, digits) Round(value, digits)Round(value, digits)
System.Math.Abs(Int16 value)System.Math.Abs(Int16 value) Abs(value)Abs(value)
System.Math.Abs(Int32 value)System.Math.Abs(Int32 value) Abs(value)Abs(value)
System.Math.Abs(Int64 value)System.Math.Abs(Int64 value) Abs(value)Abs(value)
System.Math.Abs(Byte value)System.Math.Abs(Byte value) Abs(value)Abs(value)
System.Math.Abs(Single value)System.Math.Abs(Single value) Abs(value)Abs(value)
System.Math.Abs(Double value)System.Math.Abs(Double value) Abs(value)Abs(value)
System.Math.Abs(Decimal value)System.Math.Abs(Decimal value) Abs(value)Abs(value)
System.Math.Truncate(Double value, Int16 digits)System.Math.Truncate(Double value, Int16 digits) Truncate(value, digits)Truncate(value, digits)
System.Math.Truncate(Double value, Int32 digits)System.Math.Truncate(Double value, Int32 digits) Truncate(value, digits)Truncate(value, digits)
System.Math.Truncate(Decimal value, Int16 digits)System.Math.Truncate(Decimal value, Int16 digits) Truncate(value, digits)Truncate(value, digits)
System.Math.Truncate(Decimal value, Int32 digits)System.Math.Truncate(Decimal value, Int32 digits) Truncate(value, digits)Truncate(value, digits)
System.Math.Power(Int32 value, Int64 exponent)System.Math.Power(Int32 value, Int64 exponent) Power(value, exponent)Power(value, exponent)
System.Math.Power(Int32 value, Double exponent)System.Math.Power(Int32 value, Double exponent) Power(value, exponent)Power(value, exponent)
System.Math.Power(Int32 value, Decimal exponent)System.Math.Power(Int32 value, Decimal exponent) Power(value, exponent)Power(value, exponent)
System.Math.Power(Int64 value, Int64 exponent)System.Math.Power(Int64 value, Int64 exponent) Power(value, exponent)Power(value, exponent)
System.Math.Power(Int64 value, Double exponent)System.Math.Power(Int64 value, Double exponent) Power(value, exponent)Power(value, exponent)
System.Math.Power(Int64 value, Decimal exponent)System.Math.Power(Int64 value, Decimal exponent) Power(value, exponent)Power(value, exponent)
System.Math.Power(Double value, Int64 exponent)System.Math.Power(Double value, Int64 exponent) Power(value, exponent)Power(value, exponent)
System.Math.Power(Double value, Double exponent)System.Math.Power(Double value, Double exponent) Power(value, exponent)Power(value, exponent)
System.Math.Power(Double value, Decimal exponent)System.Math.Power(Double value, Decimal exponent) Power(value, exponent)Power(value, exponent)
System.Math.Power(Decimal value, Int64 exponent)System.Math.Power(Decimal value, Int64 exponent) Power(value, exponent)Power(value, exponent)
System.Math.Power(Decimal value, Double exponent)System.Math.Power(Decimal value, Double exponent) Power(value, exponent)Power(value, exponent)
System.Math.Power(Decimal value, Decimal exponent)System.Math.Power(Decimal value, Decimal exponent) Power(value, exponent)Power(value, exponent)

ビット演算子のマッピングBitwise Operator Mapping

ビット演算子Bitwise operator 非ブール型のオペランドの正規関数Canonical function for non-Boolean operands ブール型のオペランドの正規関数Canonical function for Boolean operands
ビット演算子 ANDBitwise AND operator BitWiseAndBitWiseAnd op1 AND op2op1 AND op2
ビット演算子 ORBitwise OR operator BitWiseOrBitWiseOr op1 OR op2op1 OR op2
ビット演算子 NOTBitwise NOT operator BitWiseNotBitWiseNot NOT(op)NOT(op)
ビット演算子 XORBitwise XOR operator BitWiseXorBitWiseXor ((op1 AND NOT(op2)) OR (NOT(op1) AND op2))((op1 AND NOT(op2)) OR (NOT(op1) AND op2))

その他のマッピングOther Mapping

メソッドMethod 正規関数Canonical function
Guid.NewGuid()Guid.NewGuid() NewGuid()NewGuid()

関連項目See also