none
problema com EF codFirst - persistencia de dados RRS feed

  • Pergunta

  • Pessoal estou usando EF codFirst/mysql e estou com um probleminha

    tenho essa classe :

    [Table("produtoversao")]
    public class classProdVersaoVO
    {
    [Key]
    public int ver_codigo { get; set; }
    public int ver_cod_produto { get; set; }
    public string ver_descricao { get; set; }
    public string ver_data { get; set; }
    public string ver_obs { get; set; }
    public int ver_situacao { get; set; }

    }

    aqui atribuo os dados e mando salvar :

    private void insVersao()
    {
    classProdVersaoVO objVO = new classProdVersaoVO();
    objVO.ver_codigo = 1;// classProdVersaoVO.getNextCodVO();
    objVO.ver_cod_produto = Convert.ToInt32(txtCodProduto.Text);
    objVO.ver_descricao = txtDescricao.Text;
    objVO.ver_data = DateTime.Now.ToString("yyyy/MM/dd");
    objVO.ver_obs = txtObs.Text;
    objVO.ver_situacao = chkSituacaoVersao.Checked ? 1 : 0;
    ArrayList rRetorno = classProdVersaoVO.insVersaoVO(objVO);
    getVersao();
    limparCamposVersao();
    }

    o problema é que o campo 'ver_codigo' nao é auto-incremnt, então eu atribuo um valor a ele, no caso acima atribui '1', porem ao salvar parece que o EF desconsidera esse valor, apesar de o objeto conter o valor, pois ao salvar ele pega o valor default da tabela, que no caso é 0(zero). Eu preciso que esse campo nao seja auto-increment. Alguem ja passou por isso ou sabe como resolver ?

    aqui esta minha tabela:

    CREATE TABLE `produtoversao` (
      `ver_codigo` int(4) unsigned zerofill NOT NULL DEFAULT '0000',
      `ver_cod_produto` int(11) NOT NULL,
      `ver_descricao` varchar(128) NOT NULL,
      `ver_data` date DEFAULT NULL,
      `ver_obs` text,
      `ver_situacao` smallint(1) NOT NULL DEFAULT '1',
      PRIMARY KEY (`ver_codigo`),
      KEY `fk_produtoversao_produto1` (`ver_cod_produto`),
      CONSTRAINT `fk_produtoversao_produto1` FOREIGN KEY (`ver_cod_produto`) REFERENCES `produto` (`prd_codigo`) ON DELETE NO ACTION ON UPDATE NO ACTION
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1


    ** quando deixo autoincrement na tabela, ele salva certinho.



    alessandre

    segunda-feira, 1 de outubro de 2012 00:49

Todas as Respostas

  • Olá, já tentou rodar um trance no banco de dados, para ver se o EF está passando 1 ou zero para seu banco de dados?

    Dá uma olhada nisto...Assim você isola o problema...

    Abs

    Marlon Tiedt
    www.sesmt.com.br

    segunda-feira, 1 de outubro de 2012 11:25