none
Inserir registro com a primary key definida no ADO.NET Entity C# RRS feed

  • Pergunta

  • Galera,

    Estou fazendo um programa de importação de dados e para isso estou o usando o ADO.NET Entity. E atualmente estou tentando inserir um registro com a primary key definida como identity(1,1), mas só que, em alguns casos, eu realmente preciso definir qual o valor da PK que preciso que salve:

       SetIdentityON<EMPRESA>();
                foreach (TB_FILIAIS filial in dadosMulti.TB_FILIAIS.ToList())
                {
                  
                    EMPRESA objEmpresa = new EMPRESA();
                    objEmpresa.ID = filial.CODLOJA;
                    objEmpresa.BAIRRO = filial.BAIRRO;
                    contexto.AddObject(typeof(EMPRESA).Name, objEmpresa);
    }
       contexto.SaveChanges();
       SetIdentityOFF<EMPRESA>();
    
    
       private void SetIdentityON<T>()
            {
                string query = "SET IDENTITY_INSERT " + typeof(T).Name + " ON";
                contexto.ExecuteStoreCommand(query);
            }

    Como vcs podem ver, eu realmente executo o comando: SET IDENTITY_INSERT TABELA ON.

    E eu vi que para que o Entity nos deixe inserir registro com a PK que informamos, precisamos alterar a propriedade StoreGeneratedPattern e deixa-la como none no MODEL.

    Porém em alguns casos, como na importação, isso é inviável, pois teremos que inserir tbm outros que registros que não iremos informar a PK.

    Então: Existe alguma maneira de alterar a propriedade StoreGeneratedPattern pelo código?

    quinta-feira, 29 de agosto de 2013 12:33