Pasar una entidad a usar sus campos para actualizar el método está bien que hacer? -- # campo con entity-framework camp codereview Relacionados El problema

Passing an entity to use it's fields to update method is ok to do?


1
vote

problema

Español

Tengo dos ideas diferentes sobre cómo manejar este método de actualización en mi clase de MVC Modelo "DataAccess" y me pregunto si en la primera, estoy manejando mi clase de manera incorrecta o ambigua, porque estoy usando miembros de El mismo objeto para dos propósitos diferentes.

La clase de hombre tiene 2 miembros relevantes. ID, que es la clave principal de la entidad, y el nombre, que es la descripción

  each_with_index1  

y esta versión del método, que utiliza las variables pasadas de manera diferente.

  each_with_index2  

¿Es mi primer método un enfoque mejor o aceptable para el problema? Debido a que, ¿qué sucede si tengo un método de actualización más adelante, que usa 8 miembros, y necesita crear más versiones de esta función para actualizar otras entidades?

## Actualizado ##

Incluye una nueva clase aquí:

  each_with_index3  
Original en ingles

I have two different ideas on how to handle this Update method in my MVC Model class "DataAccess" And I'm wondering if in the first, I'm handling my class incorrectly or ambiguously, because I'm using members from the same object for two different purposes.

The man Class has 2 relevant members. ID, which is the primary key of the entity, and Name, which is the description

    public DbResult Update(Man man)     {         DbResult dbResult;           var query =             from person in _MyDBEntities.Men             where person.ManID == man.ManID // Man with ManID is what we're looking for.             select person;          try         {             foreach (Man m in myQuery)             {                 m.Name = man.Name; // man.Name is the new name             }             dbResult = DbResult.Success("Record updated");         }         catch (Exception e)         {             dbResult = DbResult.Failed(e.ToString());            }         return dbResult;     } 

And this version of the method, which uses the variables passed in differently.

    public DbResult Update(int idToLookFor, string newName)     {         DbResult myResult;           var query =             from person in _MyDBEntities.Men             where person.ManID == idToLookFor             select person;          try         {             foreach (Man m in myQuery)             {                 m.Name = newName;             }             dbResult = DbResult.Success("Record updated");         }         catch (Exception e)         {             dbResult = DbResult.Failed(e.ToString());            }         return dbResult;     } 

is my first method a better or ok approach to the problem? Because what if I have an update method later on that uses 8 members, and need to create more versions of this function for updating other entities?

## UPDATED ##

Including a new class here:

public class InputValidation//<T> where T: class {     /// <summary>     /// Delegate that matches the signature of TryParse, method defined for all primitives.     /// </summary>     /// <typeparam name="T">Output type of This Delegate</typeparam>     /// <param name="input">input for this Delegate to translate to type T</param>     /// <param name="output">The translated variable to return via out parameter</param>     /// <returns>Whether the Parse was successful or not, and output as output</returns>     public delegate bool TryParse<T>(string input, out T output);     public bool ValidateInputType<T>(string input, TryParse<T> TypeValidator, out T result)     {         return TypeValidator(input, out result);     }     public bool ValidateInputRange<T>(ref T result, int lower, int upper)     {         // How can I use relational operators like > < = on T? without forcing T result to an int?         return isValidRange(int.Parse(result.ToString()), lower, upper);     }     public bool isValidRange(int item, int lower, int upper)     {         return (lower <= item && item <= upper);     } } 
     

Lista de respuestas

1
 
vote
vote
La mejor respuesta
 

El segundo me costura un mejor enfoque, pero usted dice que el Manid es una clave principal, entonces, ¿por qué lo está manejando como una clave no primaria y usando el resultado de la consulta como una secuencia?

  public DbResult Update(int idToLookFor, string newName) {     return Update(_MyDBEntities.Men.Single(p => p.ManID == idToLookFor), newName); }  public DbResult Update(Man person, string newName) {     try     {         person.Name = newName;         //saving missing?         return DbResult.Success("Record updated");     }     catch (Exception e)     {         return DbResult.Failed(e.ToString());     } }   

y el ahorro real desaparecido o se coloca en otra parte, entonces, ¿por qué estás configurando aquí el dbresult?

 

The second one seams to me a better approach but you say that the ManID is a primary key, so why are you handling it as a non primary key and using the query result as a sequance?

public DbResult Update(int idToLookFor, string newName) {     return Update(_MyDBEntities.Men.Single(p => p.ManID == idToLookFor), newName); }  public DbResult Update(Man person, string newName) {     try     {         person.Name = newName;         //saving missing?         return DbResult.Success("Record updated");     }     catch (Exception e)     {         return DbResult.Failed(e.ToString());     } } 

And the real saving missing or it's placed to elsewhere so why are you setting here the DbResult?

 
 
         
         

Relacionados problema

4  Insertar objeto de modelo de manera efectiva usando la entidad Framework  ( Insert model object effectively using entity framwork ) 
Tengo una aplicación MVVM de WPF. Tengo un modelo de cliente que es generado por un marco de entidad (primer enfoque de la base de datos) y un 99887766555443...

4  ¿Debo crear dos servicios separados y luego combinarlos o tener uno grande?  ( Should i create two seperate services and then combine them or have one large ) 
Básicamente, tengo dos mesas, campañas y campañas separadas. Se relacionan a través de campañas. Quiero un servicio que pueda manejar ambos al mismo tiempo, y...

11  Manera eficiente de tratar con el mantenimiento de muchos: muchas relaciones en el código EF: primero  ( Efficient way to deal with maintaining manymany relationships in ef code first ) 
Tengo todo esto trabajando, pero parece estar bastante largo, y pensé que publicaría aquí y vería si lo estoy haciendo mal ... Tengo una relación M: M entre...

1  Serializar las propiedades de una entidad marco de entidad a los campos de datos y de vuelta  ( Serialize the properties of an entity framework entity to data fields and back ) 
Estoy tratando de escribir código para convertir las propiedades de una entidad marco de entidad a las cuerdas y la espalda. Aquí está el código hasta ahora...

3  Master Detalle Insertar en Entity Framework 6 Base de datos Primer MVC 5  ( Master detail insert in entity framework 6 database first mvc 5 ) 
Tengo un DB con una tabla maestra llamada "Facturas" y otra tabla de detalles "Facturas_Detalle". Me gustaría insertarlos, por lo que esta es una "base de dat...

1  Retroalimentación y consejos sobre mi arquitectura de aplicación de N-Tier  ( Feedback and advice on my n tier application architecture ) 
Estoy trabajando en una aplicación que utilizará un enfoque N-TIERED. Agradecería cualquier comentario y consejos sobre mi arquitectura antes de continuar. ...

1  Controlador con templateService  ( Controller with templateservice ) 
Estoy trabajando en mi proyecto de API web de plantilla. Sólo quiero escuchar cualquier sugerencia sobre cómo mejorar este código. Escuché que el patrón de ...

4  Clase de cliente WCF  ( Wcf client class ) 
La clase es responsable de envolver las solicitudes a un servicio de datos WCF, que ordena el código de llamadas. Las transacciones son compatibles implícitam...

4  Variable dinámica: ¿es la mejor manera de asignar dinámicamente?  ( Dynamic variable is that best way to dynamically assign ) 
Normalmente, podría declarar la variable 'correo electrónico' como la clase base para el correo electrónico y el amplificador; Emailutbound, luego lanza a la ...

6  Mejorar el tiempo que se tarda en insertar miles de registros utilizando el marco de entidades  ( Improving time it takes to insert thousands of records using entity framework ) 
Tengo una tarea en mi programa que está insertando miles (94,953 en una instancia y 6.930 en otro) de registros en mi base de datos utilizando el marco de ent...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos