none
Uso de Function Public Overrides Function Equals(obj As Object) As Boolean RRS feed

  • Pregunta

  • Buenos Días compañeros, hoy me ha despertado una duda, cuando creo mis entidades, siempre veo esta función "Function Public Overrides Function Equals(obj As Object) As Boolean" que me es recomendado por la interfaz de desarrollo, he estado leyendo acerca de que compara si dos objectos son iguales. ahora mi pregunta es la siguiente en que ocasión podría ser usada, ya que me gusta siempre ir mejorando mi código y haciendo buenas practicas.

    Otra duda que me despertó es que me gustaría saber cual es la mejor forma de hacer El Insert, Update, Delete and Select o CRUD de las entidades si tienen algún ejemplo o link me seria de ayuda, he estado viendo varias ejemplos, pero me gustaría ver las buenas practicas o la forma mas recomendada de hacerlo.

    Gracias de Antemano.


    Alexander Jimenez

    viernes, 19 de octubre de 2018 16:02

Respuestas

  • De forma predeterminada, cuando comparas dos objetos tales como

    If empleado1 = empleado2 Then...

    lo que hace el sistema es que llama al método Equals para compararlos. Si la clase Empleado no tiene un Equals, se llama al Equals de su clase madre, que en última instancia es la clase System.Object. Y el Equals de System.Object lo que hace es llamar a ReferenceEquals. Y este método solo compara las referencias y devuelve True si las referencias son idénticas, es decir, si empleado1 y empleado2 se refieren exactamente al mismo objeto en memoria. Pero si son dos instancias distintas, devuelve False incluso aunque todos los campos que hay dentro del Empleado sean exactamente idénticos en las dos instancias.

    Si no es eso lo que quieres, sino que deseas usar otro criterio de igualdad como por ejemplo, "dos empleados se consideran el mismo si el campo "Codigo" tiene el mismo valor, entonces lo que haces es meter un override del Equals y programar dentro tu criterio de igualdad.

    Si haces eso, acuérdate de hacer tambien un override del GetHashCode, o puedes tener problemas con el funcionamiento de los HashTable, Dictionary y otros contenedores que usen el hash de tu clase.

    En cuanto a los CRUD con entidades, la respuesta más directa es "uitiliza un ORM, que precisamente sirve para eso". El ORM de Microsoft se llama Entity Framework, pero puedes usar otros, como por ejemplo el NHibernate que es muy popular.

    • Propuesto como respuesta Sergio Parra domingo, 28 de octubre de 2018 22:31
    • Marcado como respuesta Pablo Rubio jueves, 1 de noviembre de 2018 16:45
    viernes, 19 de octubre de 2018 16:14