Partilhar via


Método CLR para mapeamento de função canônica

O Entity Framework fornece um conjunto de funções canônicas que implementam funcionalidades comuns em muitos sistemas de banco de dados, como manipulação de cadeia de caracteres e funções matemáticas. Isso permite que os desenvolvedores direcionem uma ampla gama de sistemas de banco de dados. Quando chamadas a partir de uma tecnologia de consulta, como LINQ to Entities, essas funções canônicas são traduzidas para a função de armazenamento correspondente correta para o provedor que está sendo usado. Isso permite que as invocações de função sejam expressas em um formulário comum entre fontes de dados, fornecendo uma experiência de consulta consistente entre fontes de dados. Os operadores bit AND, OR, NOT e XOR também são mapeados para funções canônicas quando o operando é um tipo numérico. Para operandos booleanos, os operadores bit a bit AND, OR, NOT e XOR calculam as operações lógicas AND, OR, NOT e XOR de seus operandos. Para obter mais informações, consulte Funções canônicas.

Para cenários LINQ, as consultas no Entity Framework envolvem o mapeamento de determinados métodos CLR para métodos na fonte de dados subjacente por meio de funções canônicas. Qualquer chamada de método em uma consulta LINQ to Entities que não seja explicitamente mapeada para uma função canônica resultará em uma exceção de tempo de execução NotSupportedException sendo lançada.

Método System.String (Static) Mapping

Método System.String (static) Função canônica
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(str0, ), str2str3) str1
Boolean Equals(String a, String b) = operador
Boolean IsNullOrEmpty(String value) (IsNull(value)) OU Comprimento(value) = 0
Boolean op_Equality(String a, String b) = operador
Boolean op_Inequality(String a , String b) != operador
Microsoft.VisualBasic.Strings.Trim(Cadeia de caracteres str) Guarnição(str)
Microsoft.VisualBasic.Strings.LTrim(Cadeia de caracteres str) Ltrim(str)
Microsoft.VisualBasic.Strings.RTrim(Cadeia de caracteres str) Rtrim(str)
Microsoft.VisualBasic.Strings.Len(Cadeia de caracteres expression) Comprimento(expression)
Microsoft.VisualBasic.Strings.Left(String str, Int32 Length) Esquerda(str, Length)
Microsoft.VisualBasic.Strings.Mid(String str, Int32 Start, Int32 Length) Substring(str, Start, Length)
Microsoft.VisualBasic.Strings.Right (String str, Int32 Length) Direita(str, Length)
Microsoft.VisualBasic.Strings.UCase(Cadeia de caracteres Value) ToUpper(Value)
Microsoft.VisualBasic.Strings.LCase(Valor da cadeia de caracteres) ToLower(Value)

Método System.String (Instance) Mapping

Método System.String (instance) Função canônica Notas
Boolean contém(String value) this COMO '%value%' Se value não for uma constante, isso será mapeado para IndexOf(this, value) > 0
Boolean EndsWith(String value) thisGOSTO »'%value Se value não for uma constante, então isso mapeia para Right(this, length(value)) = value.
Boolean StartsWith(String value) this COMO 'value%' Se value não for uma constante, isso será mapeado para IndexOf(this, value) = 1.
Duração Comprimento(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 Remover (Int32 startIndex) Substring(this, 1, startIndex)
System.String Remover (Int32 startIndex, Int32 count) Concat(Substring(this, 1, startIndex) , Substring(this, startIndex + count +1, Length(this) - (startIndex + count))) Remove(startIndex, count) só é suportado se count for um número inteiro maior ou igual a 0.
System.String Replace(String oldValue, String newValue) Substituir(this, oldValue, newValue)
Substring System.String(Int32 startIndex) Substring(this, startIndex +1, Comprimento(this) - startIndex)
Substring System.String(Int32 startIndex, Int32 length) Substring(this, startIndex +1, length)
System.String ToLower() ToLower(this)
System.String ToUpper() ToUpper(this)
System.String Trim() Guarnição(this)
System.String TrimEnd(Char[] trimChars) RTrim(this)
System.String TrimStart(Char[]trimChars) LTrim(this)
Boolean Equals(String value) = operador

Método System.DateTime (Static) Mapping

Método System.DateTime (estático) Função canônica Notas
Booleano igual (DateTime t1, DateTime t2) = operador
System.DateTime.Now CurrentDateTime()
System.DateTime.UtcNow CurrentUtcDateTime()
Boolean op_Equality(DateTime d1, DateTime d2) = operador
Boolean op_GreaterThan(DateTime t1, DateTime t2) > Operador
Boolean op_GreaterThanOrEqual(DateTime t1, DateTime t2) >= operador
Boolean op_Inequality(DateTime t1, DateTime t2) != operador
Boolean op_LessThan(DateTime t1, DateTime t2) < Operador
Boolean op_LessThanOrEqual(DateTime t1, DateTime t2) <= operador
Microsoft.VisualBasic.DateAndTime.DatePart( _

ByVal Interval como DateInterval, _

ByVal DateValue como DateTime, _

Opcional ByVal FirstDayOfWeekValue como FirstDayOfWeek = VbSunday, _

Opcional ByVal FirstWeekOfYearValue como FirstWeekOfYear = VbFirstJan1 _

) Como inteiro
Consulte a seção Função DatePart para obter mais informações.
Microsoft.VisualBasic.DateAndTime.Now CurrentDateTime()
Microsoft.VisualBasic.DateAndTime.Year(DateTime TimeValue) Ano()
Microsoft.VisualBasic.DateAndTime.Month(DateTime TimeValue) Mês()
Microsoft.VisualBasic.DateAndTime.Day(DateTime TimeValue) Dia()
Microsoft.VisualBasic.DateAndTime.Hour(DateTime TimeValue) Hora()
Microsoft.VisualBasic.DateAndTime.Minute(DateTime TimeValue) Minuto()
Microsoft.VisualBasic.DateAndTime.Second(DateTime TimeValue) Segundo()

Método System.DateTime (Instance) Mapping

Método System.DateTime (instância) Função canônica
Boolean Equals(DateTime value) = operador
Dia Dia(this)
Hora Hora(this)
Milissegundos Milissegundo(this)
Minuto Minuto(this)
Month Mês(this)
Second Segundo(this)
Anual Ano(this)

Método System.DateTimeOffset (Instance) Mapeamento

O mapeamento mostrado para os get métodos nas propriedades listadas.

Método System.DateTimeOffset (instância) Função canônica Notas
Dia Dia(this) Sem suporte no SQL Server 2005.
Hora Hora(this) Sem suporte no SQL Server 2005.
Milissegundos Milissegundo(this) Sem suporte no SQL Server 2005.
Minuto Minuto(this) Sem suporte no SQL Server 2005.
Month Mês(this) Sem suporte no SQL Server 2005.
Second Segundo(this) Sem suporte no SQL Server 2005.
Anual Ano(this) Sem suporte no SQL Server 2005.

Nota

O Equals método retorna true se os objetos comparados DateTimeOffset forem iguais, false caso contrário. O CompareTo método retorna 0, 1 ou -1 dependendo se o objeto comparado DateTimeOffset é igual, maior ou menor que, respectivamente.

Método System.DateTimeOffset (Static) Mapping

O mapeamento mostrado para os get métodos nas propriedades listadas.

Método System.DateTimeOffset (estático) Função canônica Notas
System.DateTimeOffset.Now() CurrentDateTimeOffset() Sem suporte no SQL Server 2005.

Método System.TimeSpan (Instance) Mapping

O mapeamento mostrado para os get métodos nas propriedades listadas.

Método System.TimeSpan (instância) Função canônica Notas
Horas Hora(this) Sem suporte no SQL Server 2005.
Milissegundos Milissegundo(this) Sem suporte no SQL Server 2005.
Minutos Minuto(this) Sem suporte no SQL Server 2005.
Segundos Segundo(this) Sem suporte no SQL Server 2005.

Nota

O Equals método retorna true se os objetos comparados TimeSpan forem iguais, false caso contrário. O CompareTo método retorna 0, 1 ou -1 dependendo se o objeto comparado TimeSpan é igual, maior ou menor que, respectivamente.

Função DatePart

A DatePart função é mapeada para uma das várias funções canônicas diferentes, dependendo do valor de Interval. A tabela a seguir exibe o mapeamento de função canônica para os valores suportados de Interval:

Valor do intervalo Função canônica
DateInterval.Year Ano()
DateInterval.Month Mês()
DateInterval.Day Dia()
DateInterval.Hour Hora()
DateInterval.Minute Minuto()
DateInterval.Second Segundo()

Mapeamento de Funções Matemáticas

Método CLR Função canônica
System.Decimal.Ceiling(Decimal d) Teto(d)
System.Decimal.Floor(Decimal d) Andar(d)
System.Decimal.Round(Decimal d) Rodada(d)
System.Math.Ceiling(Decimal d) Teto(d)
System.Math.Floor(Decimal d) Andar(d)
System.Math.Round(Decimal d) Rodada(d)
System.Math.Ceiling(Duplo a) Teto(a)
System.Math.Floor(Duplo a) Andar(a)
System.Math.Round(Duplo a) Rodada(a)
System.Math.Round(Valor duplo, Int16 dígitos) Arredondado (valor, dígitos)
System.Math.Round(Valor duplo, Int32 dígitos) Arredondado (valor, dígitos)
System.Math.Round(valor decimal, Int16 dígitos) Arredondado (valor, dígitos)
System.Math.Round(valor decimal, Int32, dígitos) Arredondado (valor, dígitos)
System.Math.Abs(valor Int16) Abs(valor)
System.Math.Abs(valor Int32) Abs(valor)
System.Math.Abs(valor Int64) Abs(valor)
System.Math.Abs(Valor de byte) Abs(valor)
System.Math.Abs(Valor único) Abs(valor)
System.Math.Abs(Valor duplo) Abs(valor)
System.Math.Abs(Valor decimal) Abs(valor)
System.Math.Truncate(Valor duplo, Int16 dígitos) Truncate(valor, dígitos)
System.Math.Truncate(Valor duplo, Int32 dígitos) Truncate(valor, dígitos)
System.Math.Truncate(Valor decimal, Int16 dígitos) Truncate(valor, dígitos)
System.Math.Truncate(valor decimal, dígitos Int32) Truncate(valor, dígitos)
System.Math.Power (valor Int32, expoente Int64) Potência (valor, expoente)
System.Math.Power(valor Int32, expoente duplo) Potência (valor, expoente)
System.Math.Power (valor Int32, expoente decimal) Potência (valor, expoente)
System.Math.Power (valor Int64, expoente Int64) Potência (valor, expoente)
System.Math.Power (valor Int64, expoente duplo) Potência (valor, expoente)
System.Math.Power (valor Int64, expoente decimal) Potência (valor, expoente)
System.Math.Power (Valor duplo, expoente Int64) Potência (valor, expoente)
System.Math.Power (Valor duplo, expoente duplo) Potência (valor, expoente)
System.Math.Power(Valor duplo, expoente decimal) Potência (valor, expoente)
System.Math.Power(Valor decimal, expoente Int64) Potência (valor, expoente)
System.Math.Power (valor decimal, expoente duplo) Potência (valor, expoente)
System.Math.Power(Valor decimal, expoente decimal) Potência (valor, expoente)

Mapeamento de operadores Bitwise

Operador Bitwise Função canônica para operandos não booleanos Função canônica para operandos booleanos
Bitwise E operador BitWiseAnd op1 E op2
Operador Bitwise OR BitWiseOr op1 OU op2
Operador Bitwise NOT BitWiseNão NÃO(op)
Operador XOR Bitwise BitWiseXor ((op1 E NÃO(op2)) OU (NOT(op1) E op2))

Outros mapeamentos

Método Função canônica
Guid.NewGuid() NewGuid()

Consulte também