SQL - ERROR al almacenar: System.InvalidOperationException: A dependent property in a ReferentialConstrain

 
Vista:
Imágen de perfil de Franklyn
Val: 6
Ha aumentado su posición en 20 puestos en SQL (en relación al último mes)
Gráfica de SQL

ERROR al almacenar: System.InvalidOperationException: A dependent property in a ReferentialConstrain

Publicado por Franklyn (3 intervenciones) el 18/10/2018 18:00:51
saludos, soy nuevo en asp.net y c#

Estoy creando una aplicación MVC. En la misma busco guardar data en una tabla "Casos". La misma esta Relacionada con una tabla "Solicitudes" aunque por ahora no deseo que almacene en cascada. A continuación parte del Script:

[TABLA CASOS]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CREATE TABLE [dbo].[AHD_Casos](
	[Codigo_Caso] [int] IDENTITY(1,1) NOT NULL,
	[Serial_Caso] [char](10) NULL,
	[Diagnostico_Caso] [nvarchar](100) NULL,
	[Prioridad_Caso] [char](10) NULL,
	[Status_Caso] [bit] NULL,
	[Solucion_Caso] [nvarchar](1000) NULL,
	[Fecha_Creacion_INS] [datetime] NULL,
	[Fecha_Atencion] [datetime] NULL,
	[Fecha_UPD] [datetime] NULL,
	[Fecha_Solucion] [datetime] NULL,
	[Codigo_Empleado] [int] NULL,
	[Codigo_Solicitud] [int] NULL,
PRIMARY KEY CLUSTERED
(
	[Codigo_Caso] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

[TABLA SOLICITUDES]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CREATE TABLE [dbo].[AHD_Solicitudes](
	[Codigo_Solicitud] [int] IDENTITY(1,1) NOT NULL,
	[Serial_Solicitud] [char](10) NULL,
	[Descripcion_Solicitud] [nvarchar](1000) NULL,
	[Fecha_INS] [datetime] NULL,
	[Fecha_UPD] [datetime] NULL,
	[Usuario_INS] [nvarchar](50) NULL,
	[Usuario_UPD] [nvarchar](50) NULL,
	[Codigo_Usuario] [int] NULL,
	[Codigo_Departamento] [int] NULL,
 CONSTRAINT [PK_AHD_Solicitudes] PRIMARY KEY CLUSTERED
(
	[Codigo_Solicitud] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

El almacenamiento de la data tiene la siguiente Lógica:

[CONTROLADOR]
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
[HttpPost]
        public ActionResult createCasosView(AHD_Casos model)
        {
 
                var vSerial_CasoMax = ((db.AHD_Casos.Select(x => x.Serial_Caso).Max().Trim()));
                model.Serial_Caso = "C" + vSerial_CasoMax;
                ViewBag.vSerial_Solicitud = model.Serial_Caso;
 
                model.Fecha_Creacion_INS = DateTime.Now;
                model.Codigo_Empleado = db.AHD_Empleados.Select(x => x.Codigo_Empleado).Max();
 
                List<AHD_Empleados> listaemplea = db.AHD_Empleados.ToList();
                ViewBag.ListOfEmpleados = new SelectList(listaemplea, "Codigo_Empleado", "Nombre_Empleado");
 
                var vParseCodigo_Solicitud = 0;
                vParseCodigo_Solicitud = createCasosViewRef(ref vCodigo_SolicitudPublic);
                model.Codigo_Solicitud = vParseCodigo_Solicitud+1;
                ViewBag.vCodigo_Solicitud = model.Codigo_Solicitud;
                model.Codigo_Caso = ViewBag.vCodigo_Solicitud++;
if (ModelState.IsValid)
            {
                try {vCasos.createCasosModel(model);}
 
                catch (DbEntityValidationException e) { Console.WriteLine(e); }
                ModelState.Clear();
                return View();
            }
            else
            {
                //return Redirect("~/Views/Home/createSoliciView.cshtml");
                return View("~/Views/Home/createCasosView.cshtml", model);
            }
        }


[MODELO]
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
public partial class AHD_Casos{
        /**/
        public AHD_Casos createCasosModel(AHD_Casos model)
        {
            var vCasos = new AHD_Casos();
try
            {
                using (var vContext = new Models.AuroraHDEntities())
                {
                   foreach (var s in vContext.AHD_Solicitudes){
                        vContext.Entry(s).State = EntityState.Unchanged;}
                    vContext.Entry(model).State = EntityState.Added;
                    vContext.SaveChanges(); //LINEA QUE GENERA ERROR
                }
            catch (DbEntityValidationException e) {
 
                foreach (var entityValidationErrors in e.EntityValidationErrors)
                {
                    foreach (var validationError in entityValidationErrors.ValidationErrors)
                    {
                        Console.Write("Property: " + validationError.PropertyName + " Error: " + validationError.ErrorMessage);
                        Console.WriteLine(e);
                        throw new Exception(e.Message);
                    }
                }
            }
            return vCasos;
        }
        [Key]
        public int Codigo_Caso { get; set; }
 
         [DataType(DataType.Text)]
        public String Serial_Caso { get; set; }
 
        [Required(ErrorMessage = "El campo [Diagnostico del Caso] es obligatorio.")]
        [Display(Name = "Diagnostico del Caso")]
        [DataType(DataType.Text)]
        public string Diagnostico_Caso { get; set; }
 
        [Required(ErrorMessage = "La [Prioriad del Caso] es obligatoria.")]
        [Display(Name = "Prioriad del Caso")]
        [DataType(DataType.Text)]
        public string Prioridad_Caso { get; set; }
 
        public bool Status_Caso { get; set; }
 
        public string Solucion_Caso { get; set; }
 
        [Required(ErrorMessage = "La [Fecha de Creación del Caso] es obligatoria.")]
        [Display(Name = "Fecha de Creación del Caso")]
        [DataType(DataType.DateTime)]
        public System.DateTime Fecha_Creacion_INS { get; set; }
 
        public System.DateTime Fecha_Atencion { get; set; }
 
        public System.DateTime Fecha_UPD { get; set; }
 
        public System.DateTime Fecha_Solucion { get; set; }
 
        [ForeignKey("Codigo_Empleado")]
        [Required(ErrorMessage = "El [Empleado] es obligatorio.")]
        [Display(Name = "Empleado Asignado")]
        public Nullable<int> Codigo_Empleado { get; set; }
 
        [ForeignKey("Codigo_Solicitud")]
        public Nullable<int> Codigo_Solicitud { get; set; }
 
        public virtual AHD_Empleados AHD_Empleados { get; set; }
        public virtual AHD_Solicitudes AHD_Solicitudes { get; set; }
        public virtual ICollection<AHD_Configuraciones> AHD_Configuraciones { get; set; }
    }


Al correrlo me genera el siguiente error:

1
System.InvalidOperationException: A dependent property in a ReferentialConstraint is mapped to a store-generated column. Column: 'Codigo_Caso'.


He cambiado los campos claves de la Base de datos, cambiado el tipo de datos de las columnas, relaciones y propiedades en las relaciones, he eliminado el IDENTITY(1,1) de ambas tablas y nada,... el mismo error. y no veo errores en el código...

Por favor, alguien que tenga una idea de como solventarlo. Llevo semanas en esto y nada Por favor ayuda...
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
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

ERROR al almacenar: System.InvalidOperationException: A dependent property in a ReferentialConstrain

Publicado por Isaias (1921 intervenciones) el 18/10/2018 20:25:53
Hola

Su problema esta basado en intentar violar la DRI (integridad declarativa) sin saberlo o inconscientemente

El problema esta originado en la logica de C#, hay muchas publicaciones en google donde dan tips de como resolverlo

https://www.google.com/search?source=hp&ei=xM7IW56tNoSjwALfvJzQDQ&q=System.InvalidOperationException%3A+A+dependent+property+in+a+ReferentialConstraint+is+mapped+to+a+store-generated+column&oq=System.InvalidOperationException%3A+A+dependent+property+in+a+ReferentialConstraint+is+mapped+to+a+store-generated+column&gs_l=psy-ab.3...648.648.0.730.1.1.0.0.0.0.0.0..0.0....0...1c.2.64.psy-ab..1.0.0....0.KUkk2kKsZ58
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 16
Ha disminuido su posición en 3 puestos en SQL (en relación al último mes)
Gráfica de SQL

ERROR al almacenar: System.InvalidOperationException: A dependent property in a ReferentialConstrain

Publicado por Ismael (5 intervenciones) el 18/10/2018 23:16:08
Hola, efectivamente, como indica Isaias, viola la primary key de la columna "Codigo_Caso", ya le respondí al mismo post dentro de c# creo o dento de ASP.NET, también indicando de que aunque haya hecho los cambios en la BBDD tiene que plasmarlo en su entity framework actualizándolo desde el mismo visual.

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
1
Comentar
Imágen de perfil de Franklyn
Val: 6
Ha aumentado su posición en 20 puestos en SQL (en relación al último mes)
Gráfica de SQL

ERROR al almacenar: System.InvalidOperationException: A dependent property in a ReferentialConstrain

Publicado por Franklyn (3 intervenciones) el 24/10/2018 22:23:54
Agradecido Isaias e Ismael.
Estuve ahondando mas en el tema de la integridad declarativa, y efectivamente mi problema estaba en la base de datos...
Proximamente les publicare los scripts en limpio para analizar los errores...
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 Franklyn
Val: 6
Ha aumentado su posición en 20 puestos en SQL (en relación al último mes)
Gráfica de SQL

ERROR al almacenar: System.InvalidOperationException: A dependent property in a ReferentialConstrain

Publicado por Franklyn (3 intervenciones) el 25/10/2018 14:50:18
Saludos, a continuación publicare las acciones tomadas:

1) [Script SQL]: Dar valor por defecto a claves foráneas, permitiendo la Integridad de Dominio
1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE TABLE [dbo].[AHD_Casos](
	[Codigo_Caso] [int] IDENTITY(1,1) NOT NULL,
	[Serial_Caso] [char](10) NULL,
	[Diagnostico_Caso] [nvarchar](100) NULL,
	[Prioridad_Caso] [char](10) NULL,
	[Status_Caso] [bit] NULL,
	[Solucion_Caso] [nvarchar](1000) NULL,
	[Fecha_Creacion_INS] [datetime] NULL,
	[Fecha_Atencion] [datetime] NULL,
	[Fecha_UPD] [datetime] NULL,
	[Fecha_Solucion] [datetime] NULL,
	[Codigo_Empleado] [int] NULL DEFAULT(1), --DEFAULT(1) IntegridadDominio
	[Codigo_Solicitud] [int] NULL DEFAULT(1) , --DEFAULT(1) IntegridadDominio


2) [Script SQL]: relacionar y restringir las claves foraneas, permitiendo la Integridad Integridad Referencial Declarativa
1
2
3
4
5
ALTER TABLE [dbo].[AHD_Casos] WITH CHECK ADD CONSTRAINT [FK_AHD_Casos_AHD_Solicitudes] FOREIGN KEY([Codigo_Solicitud])	--
REFERENCES [dbo].[AHD_Solicitudes] ([Codigo_Solicitud]) -- Integridad Referencial Declarativa
GO
ALTER TABLE [dbo].[AHD_Casos] NOCHECK CONSTRAINT [FK_AHD_Casos_AHD_Solicitudes]											--
GO

3) [Codigo ASP.NET]. Comentar la linea que evita que se guarden cambios en la tabla con la clave foranea
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public partial class AHD_Casos{
 
    public AHD_Casos createCasosModel(AHD_Casos model)
    {
        var vCasos = new AHD_Casos();
try
        {
            using (var vContext = new Models.AuroraHDEntities())
            {
             /*
               foreach (var s in vContext.AHD_Solicitudes){
                    vContext.Entry(s).State = EntityState.Unchanged;}
                */
                vContext.Entry(model).State = EntityState.Added;
                vContext.SaveChanges(); //LINEA QUE GENERABA ERROR
            }
        catch (DbEntityValidationException e) { }
        return vCasos;
    }

Agradecido a todos
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