none
Insert com LINQ ERRO RRS feed

  • Pergunta

  • Olá pessoal,

    Estou com problemas para inserir dados no bd com o linq.
    Utilizo uma classe Resposta (atributos abaixo) que contem alguns atributos e no banco minha tablela se chama  Answer (campos abaixo). O erro apresentado é o seguinte:

    Error    2    The best overloaded method match for 'System.Data.Linq.Table<eDeploy.Azul.ProjetoEnquete.DAL.Answer>.InsertOnSubmit(eDeploy.Azul.ProjetoEnquete.DAL.Answer)' has some invalid arguments    D:\Projetos\Azul\Branches\AzulProjetoEnquete\eDeploy.Azul.ProjetoEnquete.DAL\EnqueteRepository.cs    33    13    eDeploy.Azul.ProjetoEnquete.DAL

    Error    3    Argument '1': cannot convert from 'eDeploy.Azul.ProjetoEnquete.DAL.Resposta' to 'eDeploy.Azul.ProjetoEnquete.DAL.Answer'    D:\Projetos\Azul\Branches\AzulProjetoEnquete\eDeploy.Azul.ProjetoEnquete.DAL\EnqueteRepository.cs    33    44    eDeploy.Azul.ProjetoEnquete.DAL


    E estou utilizando para persistir :
      
       EnqueteDataContext context;
       context.Answers.InsertOnSubmit(r);

    Por favor, podem ajudar

    Classe resposta

          private int questionId; //question_id
            private int order;      // seria pnr
            private string resposta; // text
            private int subQuestion;  // next 


    Atributos tabela
    ANSW_ROW_ID    // auto increment
    ANSW_QUESTION_ID 
    ANSW_ORDER   
    ANSW_TEXT  
    ANSW_NEXT  
    sexta-feira, 12 de fevereiro de 2010 20:21

Respostas

  • Você criou essa classe resposta usando o Object Relational Designer ou alguma outra ferramenta de mapeamento? Porque se não, você não vai conseguir inserir, visto que a classe que você tenta inserir no BD é diferente da classe-entidade originada pelo LINQ.

    Digo isso pois o correto seria instanciar uma classe-entidade da sua tabela, preenchê-la com os dados e então enviá-la.

    algo como:

    Answers resposta = new Answers();
    resposta.QUESTIONID = ...;
    resposta.ORDER = ...;
    resposta.TEXT = ...;
    
    context.Answers.InsertOnSubmit(resposta);
    SubmitChanges();
    Answers.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues,context.Answers);
    Espero ter ajudado, sou apenas um iniciante, se falei besteira por favor me corrijam. Abraço o/
    quarta-feira, 17 de fevereiro de 2010 04:09