none
Working with Self Traking Entity RRS feed

  • Pregunta

  • Hola estoy trabajando con STE y en varios ejemplos he visto que al trabajar con estos ya no sirve el add, delete etc que ahora hay que utilizar el ApplyChanges pero este no sale, los unicos Apply que salen son ApplyCurrentValues y ApplyOriginalValues, como hago para que salgan??? estoy trabajando en VS 2010 PREMIUM.

    o si por el contrario sigo trabajndo con los AddObjet, DeleteObjet etc

    Gracias por la ayuda

    martes, 26 de octubre de 2010 20:19

Respuestas

Todas las respuestas

  • Hola,

    Antes de nada, deberías ver con que versión de EF estas trabajando. Puesdes mirar cúal es la versión del ensamblado:

    System.Data.Entity.dll

    Saludos,

    JAReyes.


    Please remember to Vote & "Mark As Answer" if this post is helpful to you.
    Por favor, recuerda Votar y "Marcar como respuesta" si la solucion de esta pregunta te ha sido útil.
    miércoles, 27 de octubre de 2010 7:13
  • Hola JA

    La version del System.Data.Entity es v4.0.30319

    Gracias por respornder

    miércoles, 27 de octubre de 2010 13:54
  • Hola,

    Si estas utilizando STE supongo que estas generando tus entidades con plantillas TT.

    En cualquier caso, para actualizar o eliminar datos el código siguiente debería funcionarte:

        public bool SubmitOrder(Order newOrder)
        {
          using (var ctx = new NorthwindEntities())
          {
            ctx.Orders.ApplyChanges(newOrder);
            return ctx.SaveChanges() > 0;
          }
        }
    
        public void DeleteOrder(Order order)
        {
          using (var ctx = new NorthwindEntities())
          {
            ctx.Orders.Attach(order);
            ctx.DeleteObject(order);
          }
        }
    

    Aquí tienes un proyecto de ejemplo de la MSDN:

    http://code.msdn.microsoft.com/mag200911EF4

    Basado en el siguiente artículo:

    http://msdn.microsoft.com/en-us/magazine/ee335715.aspx

    Saludos,

    JAReyes.


    Please remember to Vote & "Mark As Answer" if this post is helpful to you.
    Por favor, recuerda Votar y "Marcar como respuesta" si la solucion de esta pregunta te ha sido útil.
    miércoles, 27 de octubre de 2010 14:54
  • Hola JA gracias por Responder y por el articulo, de hecho este ya lo habia leido y me sirvio de base para lo que tengo, acontinuacion te cuento como esta mi proyecto

    proyectos:

    Productos.Data -> contiene el modelo productosmodel.edmx y Productosmodelo.context.tt

    Productos.Model -> contiene productosmodelo.tt

    y este es codigo del proyect dataAcces

    public bool CrearProducto(Productos.Model.Producto producto)
        {
          bool Result = false;
          try
          {
            using (var context = new Productos.Data.MantizProductosEntities())
            {
              context.Productoes.AddObject(producto);
              context.SaveChanges();
              return Result = true;
            }
          }
          catch
          {
            return Result;
          }      
        }

     como puedes ver utilizo es el AddOject, por que no me sale el metodo Applychanges.

    quiero anotar que con el AddOject esta funcionando, pero quiero saber por que no sale el otro metodo, creo que trabajr con ApplyChanges es mejor, o depronto me funciona asi por que no estoy implemtado bien los STE

    mmmm ahora no se si sea porque aun conservo el contex en el mismo proyecto que contiene el .edmx

     

     

     

    miércoles, 27 de octubre de 2010 15:20
  • mmm hay algo que estoy tratando de hacer

    y el insertar parecido a lo que haces al elimina

      using (var context = new Productos.Data.MantizProductosEntities())
            {
              context.Productoes.Attach(producto);
              context.AddObjet(nombredelentity, producto); en este caso el nombre del entity es MantizProductosEntities???  
              return Result = true;
            }

    miércoles, 27 de octubre de 2010 15:41
  • mmm ya funciono el crear y el eliminar, voy por el Actualizar
    • Marcado como respuesta Wipito miércoles, 27 de octubre de 2010 18:00
    miércoles, 27 de octubre de 2010 15:50
  • Hola para dar por teminado este tema dejo los metodos de eliminacion, actualizacion e insercion.

    la razon por la cual no me salia el ApplyChanges era por que no habia puesto el using.

     

        public bool CreateProducto(Producto producto)
        {
          bool Result = false;
          try
          {
            using (var context = new MantizProductosEntities())
            {
              context.Productoes.AddObject(producto);
              return Result = context.SaveChanges() > 0;
            }
          }
          catch (Exception e)
          {
            return Result;
          }
        }
    
        public bool EiliminarProducto(Producto producto)
        {
          
          bool Result = false;
          try
          {
            using (var context = new MantizProductosEntities())
            {          
              context.Productoes.Attach(producto);
              context.DeleteObject(producto);
              context.SaveChanges();
              return Result = true;
            }
          }
          catch (Exception e)
          {
            return Result;
          }
        }
        
    
        public bool ModificarProducto(Producto producto)
        {
          bool Result = false;
          try
          {
            using (var context = new MantizProductosEntities())
            {
              producto.MarkAsModified();
              context.Productoes.ApplyChanges (producto);
              context.SaveChanges();
              return Result = true;          
            }        
          }
          catch (Exception e)
          {
            return Result;
          }
        }
    Gracias por la ayuda JA.
    miércoles, 27 de octubre de 2010 17:59
  • Ok,

    Tal y como te comentaba...

    Saludos,

    JAReyes.


    Please remember to Vote & "Mark As Answer" if this post is helpful to you.
    Por favor, recuerda Votar y "Marcar como respuesta" si la solucion de esta pregunta te ha sido útil.
    miércoles, 27 de octubre de 2010 18:09