Mappage de la méthode CLR aux fonctions de chaînes canoniques

Entity Framework fournit un ensemble de fonctions canoniques chargées d'implémenter des fonctionnalités communes à de nombreux systèmes de base de données, notamment la manipulation de chaînes et les fonctions mathématiques. Cela permet aux développeurs de cibler un large éventail de systèmes de base de données. Lorsqu'elles sont appelées via une technologie de requête comme LINQ to Entities, ces fonctions canoniques sont traduites dans la fonction de magasin correspondante du fournisseur utilisé. Les appels de fonction peuvent ainsi être exprimés sous une forme commune dans toutes les sources de données, ce qui procure une expérience de requête cohérente. Les opérateurs au niveau du bit AND, OR, NOT et XOR sont également mappés à des fonctions canoniques lorsque l'opérande est de type numérique. Dans le cas des opérandes booléens, les opérateurs au niveau du bit AND, OR, NOT et XOR calculent les opérations logiques AND, OR, NOT et XOR de leurs opérandes. Pour plus d’informations, consultez Fonctions canoniques.

Pour les scénarios LINQ, les requêtes exécutées sur Entity Framework impliquent le mappage de certaines méthodes CLR aux méthodes au niveau de la source de données sous-jacente au moyen de fonctions canoniques. Les appels de méthode d'une requête LINQ to Entities qui ne sont pas explicitement mappés à une fonction canonique entraîneront la levée d'une exception d'exécution NotSupportedException.

Mappage de la méthode System.String (statique)

Méthode System.String (statique) Fonction canonique
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) = (opérateur)
Boolean IsNullOrEmpty(String value) (IsNull(value)) OR Length(value) = 0
Boolean op_Equality(String a, String b) = (opérateur)
Boolean op_Inequality(String a , String b) != (opérateur)
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)

Mappage de la méthode System.String (d'instance)

Méthode System.String (d'instance) Fonction canonique Notes
Boolean Contains(String value) this LIKE '%value%' Si value n’est pas une constante, ceci est mappé à IndexOf(this, value) > 0
Boolean EndsWith(String value) this LIKE '%value' Si value n'est pas une constante, cela mappe à Right (this, length(value)) = value.
Boolean StartsWith(String value) this LIKE 'value%' Si value n'est pas une constante, cela mappe à IndexOf (this, value) = 1.
Longueur 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))) La méthode Remove(startIndex, count) n'est prise en charge que si count est un entier supérieur ou égal à 0.
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) = (opérateur)

Mappage de la méthode System.DateTime (statique)

Méthode System.DateTime (statique) Fonction canonique Notes
Boolean Equals(DateTime t1, DateTime t2) = (opérateur)
System.DateTime.Now CurrentDateTime()
System.DateTime.UtcNow CurrentUtcDateTime()
Boolean op_Equality(DateTime d1, DateTime d2) = (opérateur)
Boolean op_GreaterThan(DateTime t1, DateTime t2) L’opérateur >
Boolean op_GreaterThanOrEqual(DateTime t1, DateTime t2) >= operator
Boolean op_Inequality(DateTime t1, DateTime t2) != (opérateur)
Boolean op_LessThan(DateTime t1, DateTime t2) L’opérateur <
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
Consultez la section concernant la fonction DatePart pour plus d'informations.
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()

Mappage de la méthode System.DateTime (d'instance)

Méthode System.DateTime (instance) Fonction canonique
Boolean Equals(DateTime value) = (opérateur)
Jour Day(this)
Heure Hour(this)
Milliseconde Millisecond(this)
Minute Minute(this)
Month Month(this)
Second Second(this)
Year Year(this)

Mappage de la méthode System.DateTimeOffset (d'instance)

Mappage indiqué pour les méthodes get sur les propriétés répertoriées.

Mappage de la méthode System.DateTimeOffset (d'instance) Fonction canonique Notes
Jour Day(this) Non pris en charge dans SQL Server 2005.
Heure Hour(this) Non pris en charge dans SQL Server 2005.
Milliseconde Millisecond(this) Non pris en charge dans SQL Server 2005.
Minute Minute(this) Non pris en charge dans SQL Server 2005.
Month Month(this) Non pris en charge dans SQL Server 2005.
Second Second(this) Non pris en charge dans SQL Server 2005.
Year Year(this) Non pris en charge dans SQL Server 2005.

Notes

La méthode Equals retourne true si les objets DateTimeOffset comparés sont égaux ; sinon false. La méthode CompareTo retourne 0, 1 ou -1 selon que l'objet DateTimeOffset comparé est égal, supérieur ou inférieur, respectivement.

Mappage de la méthode System.DateTimeOffset (statique)

Mappage indiqué pour les méthodes get sur les propriétés répertoriées.

Mappage de la méthode System.DateTimeOffset (statique) Fonction canonique Notes
System.DateTimeOffset.Now() CurrentDateTimeOffset() Non pris en charge dans SQL Server 2005.

Mappage de la méthode System.TimeSpan (d'instance)

Mappage indiqué pour les méthodes get sur les propriétés répertoriées.

Mappage de la méthode System.TimeSpan (d'instance) Fonction canonique Notes
Heures Hour(this) Non pris en charge dans SQL Server 2005.
Millisecondes Millisecond(this) Non pris en charge dans SQL Server 2005.
Minutes Minute(this) Non pris en charge dans SQL Server 2005.
Secondes Second(this) Non pris en charge dans SQL Server 2005.

Notes

La méthode Equals retourne true si les objets TimeSpan comparés sont égaux ; sinon false. La méthode CompareTo retourne 0, 1 ou -1 selon que l'objet TimeSpan comparé est égal, supérieur ou inférieur, respectivement.

Fonction DatePart

La fonction DatePart est mappée à l'une des diverses fonctions canoniques, en fonction de la valeur de Interval. Le tableau suivant présente le mappage de la fonction canonique pour les valeurs de Interval prises en charge :

Valeur d'intervalle Fonction canonique
DateInterval.Year Year()
DateInterval.Month Month()
DateInterval.Day Day()
DateInterval.Hour Hour()
DateInterval.Minute Minute()
DateInterval.Second Second()

Mappage de fonctions mathématiques

Méthode CLR Fonction canonique
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(valeur Double, chiffres Int16) Round(valeur, chiffres)
System.Math.Round(valeur Double, chiffres Int32) Round(valeur, chiffres)
System.Math.Round(valeur Decimal, chiffres Int16) Round(valeur, chiffres)
System.Math.Round(valeur Decimal, chiffres Int32) Round(valeur, chiffres)
System.Math.Abs(valeur Int16) Abs(valeur)
System.Math.Abs(valeur Int32) Abs(valeur)
System.Math.Abs(valeur Int64) Abs(valeur)
System.Math.Abs(valeur Byte) Abs(valeur)
System.Math.Abs(valeur Single) Abs(valeur)
System.Math.Abs(valeur Double) Abs(valeur)
System.Math.Abs(valeur Decimal) Abs(valeur)
System.Math.Truncate(valeur Double, chiffres Int16) Truncate(valeur, chiffres)
System.Math.Truncate(valeur Double, chiffres Int32) Truncate(valeur, chiffres)
System.Math.Truncate(valeur Decimal, chiffres Int16) Truncate(valeur, chiffres)
System.Math.Truncate(valeur Decimal, chiffres Int32) Truncate(valeur, chiffres)
System.Math.Power(valeur Int32, exposant Int64) Power(valeur, exposant)
System.Math.Power(valeur Int32, exposant Double) Power(valeur, exposant)
System.Math.Power(valeur Int32, exposant Decimal) Power(valeur, exposant)
System.Math.Power(valeur Int64, exposant Int64) Power(valeur, exposant)
System.Math.Power(valeur Int64, exposant Double) Power(valeur, exposant)
System.Math.Power(valeur Int64, exposant Decimal) Power(valeur, exposant)
System.Math.Power(valeur Double, exposant Int64) Power(valeur, exposant)
System.Math.Power(valeur Double, exposant Double) Power(valeur, exposant)
System.Math.Power(valeur Double, exposant Decimal) Power(valeur, exposant)
System.Math.Power(valeur Decimal, exposant Int64) Power(valeur, exposant)
System.Math.Power(valeur Decimal, exposant Double) Power(valeur, exposant)
System.Math.Power(valeur Decimal, exposant Decimal) Power(valeur, exposant)

Mappage d'opérateurs de bits

Opérateur de bits Fonction canonique pour les opérandes non booléens Fonction canonique pour les opérandes booléens
Opérateur de bits AND BitWiseAnd op1 AND op2
Opérateur de bits OR BitWiseOr op1 OR op2
Opérateur de bits NOT BitWiseNot NOT(op)
Opérateur de bits XOR BitWiseXor ((op1 AND NOT(op2)) OR (NOT(op1) AND op2))

Autre mappage

Méthode Fonction canonique
Guid.NewGuid() NewGuid()

Voir aussi