1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Entity Framework (Fluent API) - Mapear métodos do C# para transformar-se em procedures/functions/view do SQL?

Existe alguma forma de mapear um método C# para que ele torne-se uma procedure/function/view no SQL? Aplicar a mesma metologia do mapeamento de Classe para Tabela que existe através do Fluent API.

Exemplo do mapeamento de Classe para Tabela que estou falando:

public TarefaMapping()
{
    this.ToTable("Tarefa");

    this.HasKey(x => x.ID);

    this.Property(x => x.Titulo)
        .HasColumnType("NVARCHAR")
        .HasMaxLength(1000)
        .IsRequired();

    this.Property(x => x.Descricao)
        .HasColumnType("NVARCHAR")
        .IsMaxLength()
        .IsRequired();
}

Exemplo do que eu tinha em mente:

public IEnumerable<TarefaModel> BuscarTarefasSemTitulo()
{
    return context.Tarefas.Where(x => String.IsNullOrEmpty(x.Titulo));
}

Iria virar:

CREATE FUNCTION BuscarTarefasSemTitulo ()
RETURNS TABLE
AS
RETURN 
(
    SELECT
          ID
        , Titulo
        , Descricao
    FROM
        Tarefa
    WHERE
        COALESCE(Titulo, '') = ''
);
  • Minha ideia era que um método de C#, seu conteúdo, fosse convertido para SQL. Ou seja, um método C# acabaria virando uma função no SQL (se houvesse retorno), caso fosse um void seria uma procedure.

    Gabriel Takashi Katakura   27 de set de 2014
  • O melhor é sempre não inventar nisso, não fazer algo que ninguém segue. Existe algum motivo real pra criar esse mapeamento? Ou é por purismo? Se realmente está tendo a necessidade de criar views, procedures em banco, etc, então crie-as diretamente na linguagem do banco e mapeie os objetos do banco. Só vai se complicar querendo fazer essa conversão.

    javaflex   27 de set de 2014
  • É mais uma curiosidade do que necessidade. Posso me virar com o mapeamento dos objetos do banco, só estava atrás de outra solução, vendo se alguém já sabia se esse tipo de implementação existia ou não.

    Gabriel Takashi Katakura   27 de set de 2014
  • Adicionei na pergunta o exemplo.

    Gabriel Takashi Katakura   28 de set de 2014
  • A expressão Lambda que você fez no método BuscarTarefasSemTitulo() já deveria gerar o SQL que você quer na prática, não entendo porque querer ser function.

    javaflex   29 de set de 2014
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags entity-framework c# ou faça a sua própria pergunta.