[Entity Framework] - Atualizar edmx a partir do banco de dados

17/05/2012

0

Fala galera, to com uma dúvida com relação ao modelo .edmx gerado pelo Entity Framework utilizando a metodologia Database First.

Estou desenvolvendo uma aplicação onde criei algumas tabelas no banco e então criei o modelo no EE, então alterei o nome das propriedades geradas no modelo. O problema é que esse banco de dados ainda irá crescer, pois irei criar mais tabelas, desse modo, preciso constantemente atualizar meu modelo, porém, ao fazer isso, toas as propriedades que estavam com o nome alterado, voltam a ter os mesmos nomes das colunas referentes no banco...e isso está me atrapalhando muito, gostaria de saber, se existe algum jeito de realizar o update no modelo trazendo as novas tabelas criadas, porém, sem atualizar as entidades já existentes no meu modelo...

Desde já agradeço
César Riva

César Riva

Responder

Posts

17/05/2012

Rodrigo Odasaki

César Riva,

Não se deve alterar o código gerado pelo EDMX, você pode perceber que todas as classes geradas por ele, são do tipo partial, justamente para que você realize suas mudanças em arquivos de classes separadas ao EDMX, já que após qualquer atualização, todas as classes geradas por ele são regeneradas.
Responder

17/05/2012

Joel Rodrigues

César, ao atualizar o modelo você terá a opção de atualizar os objetos que sofreram modificações ou apenas adicionar os novos. Acredito que você precise apenas adicionar os novos, certo?
Responder

17/05/2012

Joel Rodrigues

César, ao atualizar o modelo você terá a opção de atualizar os objetos que sofreram modificações ou apenas adicionar os novos. Acredito que você precise apenas adicionar os novos, certo?
Responder

17/05/2012

César Riva

Olá Joel, parece que sim, fiz o teste aqui, criei uma nova tabela básica, e dei o update model from databse, lá pude escolher apenas adicionar a nova tabela, desse modo minhas entidades que já estavam no modelo não foram alteradas...

muito obrigado pela dica!
Responder

17/05/2012

Joel Rodrigues

Disponha, fico feliz por ter ajudado.
Quando precisar, estamos aqui.
Responder

01/03/2016

Ricardo

Cesar, estou aprendendo isso agora, e no livro que estou lendo ele sugeriu criar novas classes para cada classe parcial gerada automaticamente pelo EF.

Essa é a classe gerada pelo EF
//------------------------------------------------------------------------------
// <auto-generated>
//    This code was generated from a template.
//
//    Manual changes to this file may cause unexpected behavior in your application.
//    Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace CadeMeuMedico.Models
{
    using System;
    using System.Collections.Generic;
    
    public partial class Medicos
    {
        public long IDMedico { get; set; }
        public string CRM { get; set; }
        public string Nome { get; set; }
        public string Endereco { get; set; }
        public string Bairro { get; set; }
        public string Email { get; set; }
        public bool AtendePorConvenio { get; set; }
        public bool TemClinica { get; set; }
        public string WebsiteBlog { get; set; }
        public int IDCidade { get; set; }
        public int IDEspecialidade { get; set; }
    
        public virtual Cidades Cidades { get; set; }
        public virtual Especialidades Especialidades { get; set; }
    }
}


Essa é a classe criada para fazer as verificações andes dos dados serem inseridos no banco de dados, dessa forma sempre que houver alguma alteração no banco de dados, você não precisa refazer todas as validações.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;

namespace CadeMeuMedico.Models
{
    [MetadataType(typeof(MedicoMetadado))]
    public partial class Medicos
    {
    }
    
    public class MedicoMetadado
    {
       [Required(ErrorMessage="Obrigatório informar o CRM")]
       [StringLength(30, ErrorMessage="O CRM deve possuir no máximo 30 caracteres")]
       public string CRM { get; set; }

       [Required(ErrorMessage = "Obrigatório informar o Nome")]
       [StringLength(80, ErrorMessage = "O Nome deve possuir no máximo 80 caracteres")]
       public string Nome { get; set; }

       [Required(ErrorMessage = "Obrigatório informar o Endereço")]
       [StringLength(100, ErrorMessage = "O Endereço deve possuir no máximo 100 caracteres")]
       public string Endereco { get; set; }

       [Required(ErrorMessage = "Obrigatório informar o Bairro")]
       [StringLength(60, ErrorMessage = "O Bairro deve possuir no máximo 60 caracteres")]
       public string Bairro { get; set; }

       [Required(ErrorMessage = "Obrigatório informar o E-mail")]
       [StringLength(100, ErrorMessage = "O E-mail deve possuir no máximo 100 caracteres")]
       public string Email { get; set; }

       [Required(ErrorMessage = "Obrigatório informar se Atende por Convênio")]
       public bool AtendePorConvenio { get; set; }

       [Required(ErrorMessage = "Obrigatório informar se Tem Clínica")]
       public bool TemClinica { get; set; }

       [StringLength(80, ErrorMessage = "O Website deve possuir no máximo 80 caracteres")]
       public string WebsiteBlog { get; set; }

       [Required(ErrorMessage = "Obrigatório informar a Cidade")]
       public int IDCidade { get; set; }
 
       [Required(ErrorMessage = "Obrigatório informar a Especialidade")]
       public int IDEspecialidade { get; set; }         
    }//
}


Me desculpe se não era essa a pergunta, como disse, estou aprendendo ASP .NET MVC agora, espero ter ajudado.

Att.,
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar