problema con Entity Framework

Iniciado por Fabricio, 3 Mayo 2010, 02:55 AM

0 Miembros y 1 Visitante están viendo este tema.

Fabricio

Hola estoy haciendo una aplicacion basica de 2 tablas Personas y Paises donde c/persona tiene un pais asociado
el problema que tengo surge cuando quiero modificar una persona o agregar una nueva persona (no hay abm de paises) cuando quiero  asociarle su IdPais me da error
el nombre de la propiedad de navegacion en la tabla Personas del modelo entity se llama Pais
Trabajo en capas hay una capa de datos en donde va el codigo que pegue y una capa de objetos con dos clases Personas y Paises
Personas tiene 3 propiedades Id, NombrePersona y IdPais
Pais tiene 2 propiedades IdPais y NombrePais

// este es el codigo para modificar
public void Modificar(CapaObjetos.Personas p)
       {
           using (var modifPersona = new PersonasModelo())
           {
               var modif = from pers in modifPersona.Personas.Include("Pais")
                          where pers.Id == p.Id
                          select pers;

               var reg = modif.FirstOrDefault();    
               reg.Nombre = p.Nombre;
               reg.Pais.IdPais = p.IdPais; //error              
               //reg.IdPais = p.IdPais;   // tambien da error              
               modifPersona.SaveChanges();
             
           }
       }

// este es el codigo para agregar
public void Agregar(CapaObjetos.Personas persona)
       {
           using (var datosPersona = new PersonasModelo())
           {
               CapaDatos.Personas newPersona = new CapaDatos.Personas();                
               newPersona.Id = persona.Id;
               newPersona.Nombre = persona.Nombre;                
               newPersona.Pais.IdPais = persona.IdPais;  //error          
               datosPersona.AddToPersonas(newPersona);
               datosPersona.SaveChanges();
           }
       }


saludos y muchas gracias por su ayuda

MANULOMM

El error esta en que estas modificando el Id del pais de la tabla paises.

Código (csharp) [Seleccionar]

reg.Pais.IdPais = p.IdPais; //error  (NO PUEDES MODIFICAR EL IDPAIS DEL PAIS SOLO EL IDPAIS DE LA PERSONA.)             
//reg.IdPais = p.IdPais;   // no deberia darte error siempre y cuando el p.IdPais este en la tabla de Pais

newPersona.Pais.IdPais = persona.IdPais;  //error   

newPersona.IdPais = persona.IdPais;  //deberia ser asi.



Atentamente,

Juan Manuel Lombana
Microsoft Student Partner
Microsoft Certified Professional
Medellín - Colombia