Guardar controlador para nuevas entidades y ediciones

Novato de MVC3 y Entity framework aquí. Estoy tratando de escribir un controlador que maneje tanto las ediciones como la creación de nuevas entradas. Aquí está mi código hasta ahora (la mayor parte generado automáticamente)

    //POST: /License/Save
    [HttpPost]
    public string Save(LICENSE_USER license_user)
    {
        if (license_user.License_ID != 0)
        {
            if (ModelState.IsValid)
            {
                db.Entry(license_user).State = EntityState.Modified;
                db.SaveChanges();
                return "Save Complete";
            }
        }
        else
        {

            if (ModelState.IsValid) {
                db.LICENSE_USER.Add(license_user);
                db.SaveChanges();
                return "New License created - " + license_user.License_ID;
            }
        }
        return "What's going on here?";
    }

Funciona muy bien para las ediciones, ya que incluyo el campo License_ID en el POST. Sin embargo, para las nuevas entradas, excluyo el campo License_ID y su valor predeterminado es 0. ¿Cuál es la forma más elegante de obtener el siguiente campo License_ID y actualizar el objeto con ese campo?

preguntado el 12 de junio de 12 a las 17:06

¿Qué está mal con el código actual? Parece correcto asumiendo que License_ID es el [Id] para LICENSE_USER. Por cierto, debería considerar usar mejores convenciones de nomenclatura (comience aquí) msdn.microsoft.com/en-us/library/ms229045.aspx -

1 Respuestas

Haz el License_ID columna en su base de datos una clave primaria de autoincremento. De esta manera, no necesita configurarlo manualmente al insertar una nueva entidad. La base de datos se encargará.

En su modelo EDMX el StoreGeneratedPattern el atributo debe establecerse en Identity para esta propiedad.

Respondido el 12 de junio de 12 a las 17:06

/facepalm...Estaba absolutamente seguro de que lo tenía configurado para autoicrement....gracias por hacerme empezar desde el principio. - TrentVB

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.