Sdílet prostřednictvím


Metoda CLR pro mapování kanonických funkcí

Entity Framework poskytuje sadu kanonických funkcí, které implementují funkce, které jsou společné v mnoha databázových systémech, jako je manipulace s řetězci a matematické funkce. Vývojáři tak můžou cílit na širokou škálu databázových systémů. Při zavolání z dotazovací technologie, jako je LINQ to Entities, se tyto kanonické funkce přeloží na správnou odpovídající funkci úložiště používaného poskytovatelem. To umožňuje vyjádřit vyvolání funkcí ve společné podobě napříč zdroji dat, což poskytuje konzistentní prostředí dotazů napříč zdroji dat. Bitové operátory AND, OR, NOT a XOR jsou také mapovány na kanonické funkce, pokud je operand číselným typem. U logických operandů bitové operátory AND, OR, NOT a XOR počítají logické operace AND, OR, NOT a XOR jejich operandů. Další informace naleznete v tématu Canonical Functions.

V případě scénářů LINQ dotazy na Entity Framework zahrnují mapování určitých metod CLR na metody souvisejícího zdroje dat prostřednictvím kanonických funkcí. Jakákoli volání metody v dotazu LINQ to Entities, které nejsou explicitně namapované na kanonickou funkci, způsobí vyvolání výjimky za běhu NotSupportedException .

System.String – metoda (statické) mapování

Metoda System.String (statická) Kanonická funkce
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, Stringstr0str1, Stringstr2, String str03) Concat(Concat(Concat(str0; str1); str2str3)
Logická hodnota Equals(String a, String b) = – operátor
Logická hodnota IsNullOrEmpty(String value) (IsNull(value)) OR Length(value) = 0
Logická hodnota op_Equality(řetězec a, řetězec b) = – operátor
Logická op_Inequality(řetězec a, řetězec b) != – operátor
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) Podřetětěr(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(Řetězcová hodnota) ToLower(Value)

System.String – metoda (Instance) – mapování

System.String – metoda (instance) Kanonická funkce Notes
Logická hodnota Contains(String value) this LIKE '%value%' Pokud value není konstanta, pak se mapuje na IndexOf(this; value) > 0.
Boolean EndsWith(String value) this LIKE '%value' Pokud value není konstanta, pak se mapuje na Right(this; length(value)) = value.
Boolean StartsWith(String value) this LIKE 'value%' Pokud value není konstanta, pak se mapuje na IndexOf(this; value) = 1.
Délka Length(this)
Int32 IndexOf(String value) IndexOf(this, value) – 1
System.String Insert(Int32 startIndex, String value) Concat(Concat(Podřetězení(this; 1; startIndex); valuePodřetězení(this; startIndex+1; Délka(this) - startIndex))
System.String Remove(Int32 startIndex) Podřetěžka(this, 1, startIndex)
System.String Remove(Int32 startIndex, Int32 count) Concat(Podřetězení(this; 1; startIndex); Podřetězení(this; + startIndexcount +1; Délka(this) - (startIndex + count))) Funkce Remove(startIndex, ) se podporuje pouze v případě, countže count je celé číslo větší nebo rovno 0.
System.String Replace(String oldValue, String newValue) Replace(this, oldValue, newValue)
Podřetězce System.String(Int32 startIndex) Podřetěžka(this; startIndex +1; Délka(this) - startIndex)
Podřetězce System.String(Int32 startIndex, Int32 length) Podřetětěr(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)
Logická hodnota Equals(String value) = – operátor

System.DateTime – metoda (statická) mapování

Metoda System.DateTime (statická) Kanonická funkce Notes
Logická hodnota Equals(DateTime t1, DateTime t2) = – operátor
System.DateTime.Now CurrentDateTime()
System.DateTime.UtcNow CurrentUtcDateTime()
Logická hodnota op_Equality(DateTime d1, DateTime d2) = – operátor
Logická hodnota op_GreaterThan(DateTime t1, DateTime t2) > operátor
Logická hodnota op_GreaterThanOrEqual(DateTime t1, DateTime t2) >= – operátor
Logická hodnota op_Inequality(DateTime t1, DateTime t2) != – operátor
Logická hodnota op_LessThan(DateTime t1, DateTime t2) < operátor
Logická hodnota op_LessThanOrEqual(DateTime t1, DateTime t2) <= – operátor
Microsoft.VisualBasic.DateAndTime.DatePart( _

ByVal Interval As DateInterval, _

ByVal DateValue As DateTime, _

Optional ByVal FirstDayOfWeekValue As FirstDayOfWeek = VbSunday, _

Optional ByVal FirstWeekOfYearValue As FirstWeekOfYear = VbFirstJan1 _

) Jako celé číslo
Další informace najdete v části Funkce 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 – metoda (instance) – mapování

Metoda System.DateTime (instance) Kanonická funkce
Logická hodnota Equals(DateTime value) = – operátor
Den Day(this)
Hodina Hour(this)
Milisekunda Milisekunda(this)
Minuta Minute(this)
Month Month(this)
Second Second(this)
Year (Rok) Year(this)

System.DateTimeOffset – metoda (instance) – mapování

Mapování zobrazené pro get metody v uvedených vlastnostech.

System.DateTimeOffset – metoda (instance) Kanonická funkce Notes
Den Day(this) Sql Server 2005 se nepodporuje.
Hodina Hour(this) Sql Server 2005 se nepodporuje.
Milisekunda Milisekunda(this) Sql Server 2005 se nepodporuje.
Minuta Minute(this) Sql Server 2005 se nepodporuje.
Month Month(this) Sql Server 2005 se nepodporuje.
Second Second(this) Sql Server 2005 se nepodporuje.
Year (Rok) Year(this) Sql Server 2005 se nepodporuje.

Poznámka:

Metoda Equals vrátí true , pokud jsou porovnávané DateTimeOffset objekty stejné; false jinak. Metoda CompareTo vrátí hodnotu 0, 1 nebo -1 v závislosti na tom, zda je porovnávaný DateTimeOffset objekt roven, větší než nebo menší než.

System.DateTimeOffset – metoda (statická) mapování

Mapování zobrazené pro get metody v uvedených vlastnostech.

Metoda System.DateTimeOffset (statická) Kanonická funkce Notes
System.DateTimeOffset.Now() CurrentDateTimeOffset() Sql Server 2005 se nepodporuje.

System.TimeSpan – metoda (instance) – mapování

Mapování zobrazené pro get metody v uvedených vlastnostech.

System.TimeSpan – metoda (instance) Kanonická funkce Notes
Hodiny Hour(this) Sql Server 2005 se nepodporuje.
Milisekundy Milisekunda(this) Sql Server 2005 se nepodporuje.
V řádu minut Minute(this) Sql Server 2005 se nepodporuje.
Sekundy Second(this) Sql Server 2005 se nepodporuje.

Poznámka:

Metoda Equals vrátí true , pokud jsou porovnávané TimeSpan objekty stejné; false jinak. Metoda CompareTo vrátí hodnotu 0, 1 nebo -1 v závislosti na tom, zda je porovnávaný TimeSpan objekt roven, větší než nebo menší než.

Funkce DatePart

Funkce DatePart je namapována na jednu z několika různých kanonických funkcí v závislosti na hodnotě Interval. Následující tabulka zobrazuje mapování kanonických funkcí pro podporované hodnoty Interval:

Hodnota intervalu Kanonická funkce
DateInterval.Year Year()
DateInterval.Month Month()
DateInterval.Day Day()
DateInterval.Hour Hour()
DateInterval.Minute Minute()
DateInterval.Second Second()

Mapování matematických funkcí

Metoda CLR Kanonická funkce
System.Decimal.Ceiling(Decimal d) Ceiling(d)
System.Decimal.Floor(Decimal d) Floor(d)
System.Decimal.Round(Decimal d) Round(d)
System.Math.Ceiling(Desetinné číslo d) Ceiling(d)
System.Math.Floor(desetinné dčíslo) 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 value, Int16 digits) Round(hodnota, číslice)
System.Math.Round(Double value; Int32 digits) Round(hodnota, číslice)
System.Math.Round(Desetinná hodnota, číslice Int16) Round(hodnota, číslice)
System.Math.Round(Desetinná hodnota, Int32, číslice) Round(hodnota, číslice)
System.Math.Abs(Hodnota Int16) Abs(hodnota)
System.Math.Abs(Int32 value) Abs(hodnota)
System.Math.Abs(Hodnota Int64) Abs(hodnota)
System.Math.Abs(bajtová hodnota) Abs(hodnota)
System.Math.Abs(Single value) Abs(hodnota)
System.Math.Abs(Dvojitá hodnota) Abs(hodnota)
System.Math.Abs(desetinná hodnota) Abs(hodnota)
System.Math.Truncate(Double value, Int16 digits) Zkrácení (hodnota, číslice)
System.Math.Truncate(Double value; Int32 digits) Zkrácení (hodnota, číslice)
System.Math.Truncate(Desetinná hodnota, číslice Int16) Zkrácení (hodnota, číslice)
System.Math.Truncate(Desetinná hodnota, číslice Int32) Zkrácení (hodnota, číslice)
System.Math.Power(Int32 value, Int64 exponent) Power(hodnota, exponent)
System.Math.Power(Int32 value; Double exponent) Power(hodnota, exponent)
System.Math.Power(Int32 value; Decimal exponent) Power(hodnota, exponent)
System.Math.Power(Hodnota Int64, Exponent Int64) Power(hodnota, exponent)
System.Math.Power(Hodnota Int64, Dvojitý exponent) Power(hodnota, exponent)
System.Math.Power(Int64 value; Decimal exponent) Power(hodnota, exponent)
System.Math.Power(Dvojitá hodnota, Exponent Int64) Power(hodnota, exponent)
System.Math.Power(Dvojitá hodnota, Dvojitá exponent) Power(hodnota, exponent)
System.Math.Power(Double value; Decimal exponent) Power(hodnota, exponent)
System.Math.Power(Desetinná hodnota, exponent Int64) Power(hodnota, exponent)
System.Math.Power(Desetinná hodnota, dvojitý exponent) Power(hodnota, exponent)
System.Math.Power(Desetinná hodnota, exponent desetinných míst) Power(hodnota, exponent)

Mapování bitového operátoru

Bitový operátor Kanonická funkce pro nelogická operandy Kanonická funkce pro logické operandy
Bitový operátor AND BitWiseAnd op1 AND op2
Bitový operátor OR BitWiseOr op1 OR op2
Bitový operátor NOT BitWiseNot NOT(op)
Bitový operátor XOR BitWiseXor ((op1 A NOT(op2)) NEBO (NOT(op1) AND op2))

Jiné mapování

metoda Kanonická funkce
Guid.NewGuid() NewGuid()

Viz také