Principales respuestas
Error en entidad Relacionada Entity Framework

Pregunta
-
Hola estimados buen dia a todos tengo un problema al intentar guardar con Entity Framework
es curioso cuando llamo a un procedimiento almacenado he guardad sin problemas pero he decidido que si estoy usando Entity Framework usar las funciones de el mismo bueno tengo estos modelos o clases
public partial class tblMaestroIngresoProducto { [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] public tblMaestroIngresoProducto() { this.tblDetalleIngresoProductos = new HashSet<tblDetalleIngresoProducto>(); } public int Id { get; set; } public Nullable<System.DateTime> FechaIngreso { get; set; } public string NumeroIngreso { get; set; } public Nullable<int> Usuario_id { get; set; } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] public virtual ICollection<tblDetalleIngresoProducto> tblDetalleIngresoProductos { get; set; } public virtual tblUsuario tblUsuario { get; set; } }
y bueno creo una clase mas y heredo de esta clase (Esto hago con el fin de que cuando elimino o hago cambios en bd se me borran los modelos y pues se perdieron algunos métodos y no quiero que me pase lo mismo)
y tengo desde el btn este codigo
MaestroIngresoProductos maestroIngresoProductos = new MaestroIngresoProductos(); //maestroIngresoProductos.Id = 1; maestroIngresoProductos.FechaIngreso = DtpFechaIngreso.Value; maestroIngresoProductos.NumeroIngreso = "110"; maestroIngresoProductos.Usuario_id = 1; MaestroIngresoProductos.InsertarMaestroProducto(maestroIngresoProductos);
por favor donde esta mi problema en esto.
agradezco la colaboración
Roberto
Respuestas
-
Echa un ojo a la definición de clase parcial en Partial Classes and Methods (C# Programming Guide)
Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos
- Marcado como respuesta Roberto C. Melgar martes, 14 de abril de 2020 22:04
Todas las respuestas
-
Hola, no hagas una herencia, sino que si te fijas en tu clase autogenereada
public partial class tblMaestroIngresoProducto
Es una clase parcial. Por lo que puedes usar digamos el fichero donde tienes MaestroIngresoProductos y declararla omo parcial
Cambia
public class MaestroIngresoProductos : tblMaestroIngresoProducto
por
public partial class tblMaestroIngresoProducto
Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos
-
Echa un ojo a la definición de clase parcial en Partial Classes and Methods (C# Programming Guide)
Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos
- Marcado como respuesta Roberto C. Melgar martes, 14 de abril de 2020 22:04
-
Estimado Sergio la verdad ese problema se resolvió, pero ahora tengo otro problema, no tengo acceso a los otros atributos que declaro en la clase, hice esto y declare un atributo Código
public partial class tblMaestroIngresoProducto { public string Codigo { get; set; } public static void InsertarMaestroProducto(CapaDatos.tblMaestroIngresoProducto maestroIngresoProducto) { using (GourmetEntities db = new GourmetEntities()) { db.tblMaestroIngresoProductos.Add(maestroIngresoProducto); db.SaveChanges(); } } }
y vea esto
debo agregar CapaDatos a public static void InsertarMaestroProducto(CapaDatos.tblMaestroIngresoProducto maestroIngresoProducto) para que pierda el error.
ahora en el boton tengo este codigo
CapaDatos.tblMaestroIngresoProducto maestroIngresoProductos = new CapaDatos.tblMaestroIngresoProducto(); //CapaLogica.tblMaestroIngresoProducto maestroIngresoProductos = new CapaLogica.tblMaestroIngresoProducto(); maestroIngresoProductos.FechaIngreso = DtpFechaIngreso.Value; maestroIngresoProductos.NumeroIngreso = "110"; maestroIngresoProductos.Usuario_id = 1; maestroIngresoProductos.Codigo = "Codigo"; CapaLogica.tblMaestroIngresoProducto.InsertarMaestroProducto(maestroIngresoProductos);
Solo tengo acceso los campos fechaIngreso, NumeroIngreso, Usuario_Id
y cuando cambio de
CapaDatos.tblMaestroIngresoProducto
a
CapaLogica.
tblMaestroIngresoProducto
solo tengo acceso al campo Codigo
que mas puede ser estimado
Gracias
Roberto
-
hola
>>debo agregar CapaDatos a public static void InsertarMaestroProducto(CapaDatos.tblMaestroIngresoProducto maestroIngresoProducto) para que pierda el error.
eso es correcto, porque estas definiendo el mismo nombre de class en dos namespaces diferentes, entonces no sabes cual resolver sino se lo indicas
Podrias poner un sufijo en el nombre como ser tblMaestroIngresoProductoDatos y tblMaestroIngresoProductoLogic para que tengas diferentes nombre
Sino es correcto que indiques el nombre del namespace
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina -