C sharp - C# ERROR: System.InvalidOperationException: A dependent property in a ReferentialConstraint

 
Vista:
Imágen de perfil de Franklyn
Val: 22
Ha aumentado 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

C# ERROR: System.InvalidOperationException: A dependent property in a ReferentialConstraint

Publicado por Franklyn (8 intervenciones) el 17/10/2018 22:31:49
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, he buscado metos de asp.net o c # y nada... el mismo error

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

C# ERROR: System.InvalidOperationException: A dependent property in a ReferentialConstraint

Publicado por miguelZ (7 intervenciones) el 17/10/2018 23:02:55
actualiza tu EDMX , borra la tabla y agregala nuevamente para que tus cambios se actualicen
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: 22
Ha aumentado 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

C# ERROR: System.InvalidOperationException: A dependent property in a ReferentialConstraint

Publicado por Franklyn (8 intervenciones) el 18/10/2018 15:20:35
hay alguna manera de actualizar el EDMX sin cambiar todos los modelos??
Estoy trabajando con EF Designer del Visual Studio 2017 y solo me permite actualizar todas las tablas, no una tabla puntual...
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

C# ERROR: System.InvalidOperationException: A dependent property in a ReferentialConstraint

Publicado por miguelZ (7 intervenciones) el 18/10/2018 16:20:51
Pues por el momento tendria que revisar el codigo,
subelo a un repositorio (ejemplo github) y compartelo asi lo podre descargar
y revisar,


Saludos.
Miguel
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
sin imagen de perfil
Val: 7
Ha aumentado 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

C# ERROR: System.InvalidOperationException: A dependent property in a ReferentialConstraint

Publicado por Ismael (10 intervenciones) el 18/10/2018 22:48:34
Hola, es lógico que si en tu entity tienes esas tablas que agregaste en su momento, quieres que se vean reflejados todos los cambios efectuados en la base de datos dentro de tu entity de éstas mismas tablas.
Por lo que es normal que se actualicen todas las tablas, si no hay cambios en otras tablas los modelos no van a cambiar, sólo de las que han sufrido cambios.

Supongo que te diste cuenta del error que te estaba lanzando y por eso has decidido cambiar los tipos en base de datos.

En el caso de que aún no sepas el motivo del fallo, es porque tienes definida la columna:
1
[Codigo_Caso] [int] IDENTITY(1,1) NOT NULL
, como clave de identidad primaria, por lo que tu no vas a tener el control sobre ésta columna a la hora de crear un registro, si no que el int de éste, te lo va a proporcionar la BBDD, por lo que, cuando estás intentando hacer en la línea:
1
model.Codigo_Caso = ViewBag.vCodigo_Solicitud++;

al intentar asignarle en el modelo un valor, al no estar permitido, te está dando una excepción al guardar. Simplemente comenta esa parte del código.

una alternativa de recuperar el id que te ha generado al insertar, es en el momento de hacer el savechanges, en la misma línea en la que te da la excepción, algo como ésto. Te recupera el Id del registro que ha creado en la BBDD.
1
int idRegistro=vContext.SaveChanges();

Espero que te resulte útil.

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: 22
Ha aumentado 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

C# ERROR: System.InvalidOperationException: A dependent property in a ReferentialConstraint

Publicado por Franklyn (8 intervenciones) el 19/10/2018 21:38:27
Agradecido Ismael ... te comento lo que he "logrado"

[Prueba 1]:
comente la linea de código que me dijiste:
1
// model.Codigo_Caso = ViewBag.vCodigo_Solicitud++;

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


[Prueba 2]:
He modificado la especificación de la identidad en la tablas
1
AHD_Casos, = [Codigo_Caso] [int] NOT NULL

y he asignado un valor a Codigo_Caso desde el Modelo
1
2
var vCodigo_CasoMax = ((db.AHD_Casos.Select(x => x.Codigo_Caso).Max()));
 model.Codigo_Caso = Convert.ToInt32(vCodigo_CasoMax);

Resultado:
1
SqlException: No se puede insertar el valor NULL en la columna 'Codigo_Caso', tabla 'AuroraHD2.dbo.AHD_Casos'. La columna no admite valores NULL. Error de INSERT.

Sin embargo al correr el proyecto y ver los puntos de ejecución, SI me aparecen datos en le campo 'Codigo_Caso'

Te comento que ademas que desde SQL Server puedo hacer INSERTS sin novedad...
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: 22
Ha aumentado 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

C# ERROR: System.InvalidOperationException: A dependent property in a ReferentialConstraint

Publicado por Franklyn (8 intervenciones) el 19/10/2018 21:39:25
agradecido miguelZ , tratare de subirlo este fin de semana desde casa y te informo
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: 22
Ha aumentado 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

C# ERROR: System.InvalidOperationException: A dependent property in a ReferentialConstraint

Publicado por Franklyn (8 intervenciones) el 25/10/2018 14:53:19
Saludos, a continuación publicare las acciones tomadas que me permitieron solventar el caso:

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
2
Comentar
Imágen de perfil de info
Val: 335
Plata
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

C# ERROR: System.InvalidOperationException: A dependent property in a ReferentialConstraint

Publicado por info (3 intervenciones) el 25/10/2018 15:05:16
Gracias por compartirlo!!!
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