ASP.NET - Ayuda Create ASP.NET + Entity Framework + MVC

 
Vista:
sin imagen de perfil
Val: 5
Ha mantenido su posición en ASP.NET (en relación al último mes)
Gráfica de ASP.NET

Ayuda Create ASP.NET + Entity Framework + MVC

Publicado por Victor Damian (4 intervenciones) el 20/09/2018 00:12:59
Buenas tardes

Estoy teniendo un problema que no le puedo encontrar la solución , espero ustedes me puedan ayudar. Es cuando quiero agregar un dato a la base de datos mediante Entity Framework.

Basicamente el codigo de mi modelo es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
[Table("PAR_EMPLEADO")]
public class Empleado
{
    [Key]
    [Display(Name = "Legajo")]
    public int Legajo { get; set; }
 
    [Required]
    [EmailAddress]
    [Display(Name = "Email")]
    public string Email { get; set; }
 
    [Display(Name = "Nombre")]
    [StringLength(50)]
    public string Nombre { get; set; }
 
    [Display(Name = "Cod. Vendedor")]
    [StringLength(4)]
    public string CodVen { get; set; }
 
    [ForeignKey("Sucursal")]
    [Display(Name = "Sucursal")]
    [StringLength(3)]
    public string CodSuc { get; set; }
 
    [ForeignKey("FuncionPri")]
    [Display(Name = "Función")]
    public int FuncionP { get; set; }
 
    [ForeignKey("FuncionSec")]
    [Display(Name = "Función Secundaria")]
    public int? FuncionS { get; set; }
 
    [Display(Name = "Estado")]
    public bool Inactivo { get; set; }
 
    public virtual Sucursal Sucursal { get; set; }
    public virtual FuncionEmple FuncionPri { get; set; }
    public virtual FuncionEmple FuncionSec { get; set; }
}



El codigo de mi controlador es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Empleado empleado)
{
    if (ModelState.IsValid)
    {
 
        db.Empleados.Add(empleado);
        db.SaveChanges();
        return RedirectToAction("Index");
    }
 
    ViewBag.CodSuc = new SelectList(db.Sucursales, "CodSuc", "dessuc", empleado.CodSuc);
    ViewBag.FuncionP = new SelectList(db.Funciones, "id", "descripcion", empleado.FuncionP);
    ViewBag.FuncionS = new SelectList(db.Funciones, "id", "descripcion", empleado.FuncionS);
    return View(empleado);
}



El error me lo esta tirando en db.savechanges()

y lo que me dice es lo siguiente:

SqlException: No se puede insertar el valor NULL en la columna 'legajo', tabla 'PergaminoPrueba.dbo.PAR_EMPLEADO'. La columna no admite valores NULL. Error de INSERT.
Se terminó la instrucción.

Ya se que me van a decir : "Le estas pasando un valor nulo a un atributo que no permite nulos en la base de datos, pero no es asi."

Le estoy pasando valor y me lo esta tomando el valor por lo que veo en el debug

subir

Y Legajo es clave primaria de mi entidad, por lo que no puedo establecerla en nulo en la base de datos.

Pueden guiarme a resolver este problema raro, para mi esta por el lado de mi entidad. El codigo y anotaciones de mi entidad son los siguientes:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
[Table("PAR_EMPLEADO")]
    public class Empleado
    {
        [Key]
        [Display(Name = "Legajo")]
        public int Legajo { get; set; }
 
        [Required]
        [EmailAddress]
        [Display(Name = "Email")]
        public string Email { get; set; }
 
        [Display(Name = "Nombre")]
        [StringLength(50)]
        public string Nombre { get; set; }
 
        [Display(Name = "Cod. Vendedor")]
        [StringLength(4)]
        public string CodVen { get; set; }
 
        [ForeignKey("Sucursal")]
        [Display(Name = "Sucursal")]
        [StringLength(3)]
        public string CodSuc { get; set; }
 
        [ForeignKey("FuncionPri")]
        [Display(Name = "Función")]
        public int FuncionP { get; set; }
 
        [ForeignKey("FuncionSec")]
        [Display(Name = "Función Secundaria")]
        public int? FuncionS { get; set; }
 
        [Display(Name = "Estado")]
        public bool Inactivo { get; set; }
 
        public virtual Sucursal Sucursal { get; set; }
        public virtual FuncionEmple FuncionPri { get; set; }
        public virtual FuncionEmple FuncionSec { get; set; }
    }
}


HELP ME!!! GRACIAS!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda Create ASP.NET + Entity Framework + MVC

Publicado por miguelz (2 intervenciones) el 25/09/2018 05:15:42
con un query insert simple usando sql manager inserta un registro en la tabla.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Leonardo Daniel A.
Val: 183
Oro
Ha mantenido su posición en ASP.NET (en relación al último mes)
Gráfica de ASP.NET

Ayuda Create ASP.NET + Entity Framework + MVC

Publicado por Leonardo Daniel A. (57 intervenciones) el 07/10/2018 00:47:50
y esa llave primaria la tienes como "autoincremental"?? si no es asi, por eso te marca error, porque no lleva nada esa propiedad de la clase y trata de insertar nulo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 31
Ha disminuido su posición en 2 puestos en ASP.NET (en relación al último mes)
Gráfica de ASP.NET

Ayuda Create ASP.NET + Entity Framework + MVC

Publicado por Ismael (14 intervenciones) el 09/10/2018 22:38:11
Hola, como dicen los compañeros,

si "Legajo" es de tipo primary key y autoincrement, no debes informarlo porque no te lo va a permitir, en el modelo Empleado que le estás mandando al entity, no debes enviar la propiedad Legajo informado, ya que la base de datos es el que te va a proporcionar el identificador Legajo. Sería lo mismo que cuando lo haces en BBDD.
Si quieres recuperar el identificador Legajo de BBDD que ha creado para ese insert, el Entity te lo va a proporcionar cuando vayas a hacer el savechanges.

1
int identificador= db.SaveChanges();

Un Saludo,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar