Zuordnen von CLR-Methoden zu kanonischen Funktionen

Das Entity Framework stellt einen Satz kanonischer Funktionen bereit, die eine auf vielen Datenbanksystemen verbreitete Funktionalität implementieren, z. B. Zeichenfolgenbearbeitung und mathematische Funktionen. Dadurch können Entwickler für einen großen Bereich von Datenbanksystemen entwickeln. Beim Aufrufen aus einer Abfragetechnologie wie LINQ to Entities werden diese kanonischen Funktionen in die entsprechenden Speicherfunktionen des verwendeten Anbieters übersetzt. Dadurch können Funktionsaufrufe für verschiedene Datenquellen in einer allgemeinen Form ausgedrückt werden, und es werden konsistente datenquellenübergreifende Abfragemöglichkeiten bereitgestellt. Weiterhin werden die bitweisen Operatoren AND, OR, NOT und XOR kanonischen Funktionen zugeordnet, wenn der Operand ein numerischer Typ ist. Bei booleschen Operanden werden durch die bitweisen Operatoren AND, OR, NOT und XOR die logischen Operationen AND, OR, NOT und XOR ihrer Operanden berechnet. Weitere Informationen finden Sie unter Kanonische Funktionen.

In LINQ-Szenarios müssen bei Abfragen für das Entity Framework bestimmte CLR-Methoden den Methoden für die zugrunde liegende Datenquelle mithilfe kanonischer Funktionen zugeordnet werden. Bei allen Methodenaufrufen in einer LINQ to Entities-Abfrage, die nicht explizit einer kanonischen Funktion zugeordnet sind, wird eine NotSupportedException-Laufzeitausnahme ausgelöst.

Mapping der System.String-Methode (statisch)

System.String-Methode (statisch) Kanonische Funktion
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) =-Operator
Boolean IsNullOrEmpty(String value) (IsNull(value)) OR Length(value) = 0
Boolean op_Equality(String a, String b) =-Operator
Boolean op_Inequality(String a , String b) !=-Operator
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)

Mapping der System.String-Methode (Instanz)

System.String-Methode (Instanz) Kanonische Funktion Notizen
Boolean Contains(String value) this LIKE '%value%' Wenn value keine Konstante ist, dann wird dies zugeordnet zu: IndexOf(this, value) > 0.
Boolean EndsWith(String value) this LIKE '%value' Wenn value keine Konstante ist, dann wird dies zugeordnet zu: Right(this, length(value)) = value.
Boolean StartsWith(String value) this LIKE 'value%' Wenn value keine Konstante ist, dann wird dies zugeordnet zu: IndexOf(this, value) = 1.
Länge 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) wird nur unterstützt, wenn count eine ganze Zahl größer oder gleich 0 (null) ist.
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) =-Operator

Mapping der System.DateTime-Methode (statisch)

System.DateTime-Methode (statisch) Kanonische Funktion Notizen
Boolean Equals(DateTime t1, DateTime t2) =-Operator
System.DateTime.Now CurrentDateTime()
System.DateTime.UtcNow CurrentUtcDateTime()
Boolean op_Equality(DateTime d1, DateTime d2) =-Operator
Boolean op_GreaterThan(DateTime t1, DateTime t2) >-Operator
Boolean op_GreaterThanOrEqual(DateTime t1, DateTime t2) >= operator
Boolean op_Inequality(DateTime t1, DateTime t2) !=-Operator
Boolean op_LessThan(DateTime t1, DateTime t2) <-Operator
Boolean op_LessThanOrEqual(DateTime t1, DateTime t2) <= operator
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
Weitere Informationen finden Sie im Abschnitt über die DatePart-Funktion.
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()

Mapping der System.DateTime-Methode (Instanz)

System.DateTime-Methode (Instanz) Kanonische Funktion
Boolean Equals(DateTime value) =-Operator
Tag Day(this)
Stunde Hour(this)
Millisekunde Millisecond(this)
Minute Minute(this)
Monat Month(this)
Second Second(this)
Year Year(this)

System.DateTimeOffset Method (Instance)-Zuordnung

Die für die get-Methoden in den aufgeführten Eigenschaften gezeigte Zuordnung.

System.DateTimeOffset-Methode (Instanz) Kanonische Funktion Notizen
Tag Day(this) Wird für SQL Server 2005 nicht unterstützt.
Stunde Hour(this) Wird für SQL Server 2005 nicht unterstützt.
Millisekunde Millisecond(this) Wird für SQL Server 2005 nicht unterstützt.
Minute Minute(this) Wird für SQL Server 2005 nicht unterstützt.
Monat Month(this) Wird für SQL Server 2005 nicht unterstützt.
Second Second(this) Wird für SQL Server 2005 nicht unterstützt.
Year Year(this) Wird für SQL Server 2005 nicht unterstützt.

Hinweis

Die Equals-Methode gibt true zurück, wenn die verglichenen DateTimeOffset-Objekte gleich sind, andernfalls false. Die CompareTo-Methode gibt 0, 1 oder -1 zurück, abhängig davon, ob das verglichene DateTimeOffset-Objekt gleich, größer oder kleiner ist.

System.DateTimeOffset-Methodenzuordnung (statisch)

Die für die get-Methoden in den aufgeführten Eigenschaften gezeigte Zuordnung.

System.DateTimeOffset-Methode (statisch) Kanonische Funktion Notizen
System.DateTimeOffset.Now() CurrentDateTimeOffset() Wird für SQL Server 2005 nicht unterstützt.

System.TimeSpan-Methodenzuordnung (Instanz)

Die für die get-Methoden in den aufgeführten Eigenschaften gezeigte Zuordnung.

System.TimeSpan-Methode (Instanz) Kanonische Funktion Notizen
Stunden Hour(this) Wird für SQL Server 2005 nicht unterstützt.
Millisekunden Millisecond(this) Wird für SQL Server 2005 nicht unterstützt.
Minuten Minute(this) Wird für SQL Server 2005 nicht unterstützt.
Sekunden Second(this) Wird für SQL Server 2005 nicht unterstützt.

Hinweis

Die Equals-Methode gibt true zurück, wenn die verglichenen TimeSpan-Objekte gleich sind, andernfalls false. Die CompareTo-Methode gibt 0, 1 oder -1 zurück, abhängig davon, ob das verglichene TimeSpan-Objekt gleich, größer oder kleiner ist.

DatePart-Funktion

Die DatePart-Funktion wird, in Abhängigkeit vom Wert von Interval, einer von mehreren kanonischen Funktionen zugeordnet. In der folgenden Tabelle wird das Mapping zu kanonischen Funktionen für die unterstützten Werte von Interval angezeigt:

Intervallwert Kanonische Funktion
DateInterval.Year Year()
DateInterval.Month Month()
DateInterval.Day Day()
DateInterval.Hour Hour()
DateInterval.Minute Minute()
DateInterval.Second Second()

Zuordnung mathematischer Funktionen

CLR-Methode Kanonische Funktion
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-Wert, Int16-Ziffern) Round(Wert, Ziffern)
System.Math.Round(Double-Wert, Int32-Ziffern) Round(Wert, Ziffern)
System.Math.Round(Dezimalwert, Int16-Ziffern) Round(Wert, Ziffern)
System.Math.Round(Dezimalwert, Int32-Ziffern) Round(Wert, Ziffern)
System.Math.Abs(Int16-Wert) Abs(Wert)
System.Math.Abs(Int32-Wert) Abs(Wert)
System.Math.Abs(Int64-Wert) Abs(Wert)
System.Math.Abs(Byte-Wert) Abs(Wert)
System.Math.Abs(Einzelwert) Abs(Wert)
System.Math.Abs(Double-Wert) Abs(Wert)
System.Math.Abs(Dezimalwert) Abs(Wert)
System.Math.Truncate(Double-Wert, Int16-Ziffern) Truncate(Wert, Ziffern)
System.Math.Truncate(Double-Wert, Int32-Ziffern) Truncate(Wert, Ziffern)
System.Math.Truncate(Dezimalwert, Int16-Ziffern) Truncate(Wert, Ziffern)
System.Math.Truncate(Dezimalwert, Int32-Ziffern) Truncate(Wert, Ziffern)
System.Math.Power(Int32-Wert, Int64-Exponent) Power(Wert, Exponent)
System.Math.Power(Int32-Wert, Double-Exponent) Power(Wert, Exponent)
System.Math.Power(Int32-Wert, Dezimalexponent) Power(Wert, Exponent)
System.Math.Power(Int64-Wert, Int64-Exponent) Power(Wert, Exponent)
System.Math.Power(Int64-Wert, Double-Exponent) Power(Wert, Exponent)
System.Math.Power(Int64-Wert, Dezimalexponent) Power(Wert, Exponent)
System.Math.Power(Double-Wert, In64-Exponent) Power(Wert, Exponent)
System.Math.Power(Double-Wert, Double-Exponent) Power(Wert, Exponent)
System.Math.Power(Double-Wert, Dezimalexponent) Power(Wert, Exponent)
System.Math.Power(Dezimalwert, Int64-Exponent) Power(Wert, Exponent)
System.Math.Power(Dezimalwert, Double-Exponent) Power(Wert, Exponent)
System.Math.Power(Dezimalwert, Dezimalexponent) Power(Wert, Exponent)

Mapping bitweiser Operatoren

Bitweiser Operator Kanonische Funktion für nicht boolesche Operanden Kanonische Funktion für boolesche Operanden
Bitweiser "AND"-Operator BitWiseAnd op1 AND op2
Bitweiser OR-Operator BitWiseOr op1 OR op2
Bitweiser "NOT"-Operator BitWiseNot NOT (op)
Bitweiser "XOR"-Operator BitWiseXor ((op1 AND NOT(op2)) OR (NOT(op1) AND op2))

Andere Zuordnung

Methode Kanonische Funktion
Guid.NewGuid() NewGuid()

Siehe auch