Tiene varios patrones para vincular ORM con la interfaz de usuario.
Véase, por ejemplo, el patrón Model GUI Mediator. En resumen, usted escribe un observador que reflejará el contenido de ORM en los componentes de la interfaz de usuario, y viceversa. Esto se ha implementado, por ejemplo, en el tiOpf framework for Delphi (este enlace tiene videos).
Otro enfoque es para mapear los datos en tiempo de ejecución: el diseño de su forma como de costumbre, a continuación, se llena el contenido en caso OnShow
, entonces el "Guardar" o "OK" botón validará a continuación, guardar el contenido en el registro ORM. Esto es lo que se hace en el main Sample application of our framework. Fácil de codificar en esta muestra simple, pero podría llevar al código de spaghetti si tiene muchos campos y validación para operar.
El último enfoque es permitir que su ORM cree el formulario.
En nuestro marco, puede definir algunas propiedades de IU sobre cada tabla, en una estructura dedicada. Luego, a single unit will create a form with all editable fields de su objeto ORM. Los enlaces a otros registros se mostrarán como un cuadro combinado, booleanos como casillas de verificación, conjuntos como casillas de radio, y así sucesivamente. A continuación, se trata el filtrado (por ejemplo, recortar un campo de texto de espacios en el lado izquierdo o derecho) y la validación (por ejemplo, asegurar que un valor de campo es único o una dirección IP válida) not in the UI part, but in the business logic itself, i.e. the ORM.
En mi humilde opinión, es obligatorio mantener una verdadera arquitectura de varios niveles. Es decir, la IU debe depender principalmente de la lógica comercial. Por ejemplo, la validación de datos debe ser parte del ORM, no de la UI. Por ejemplo, si decide agregar un cliente web a su aplicación cliente Delphi, no tendrá que codificar la validación en otro momento: será común para ambos clientes, separado de los detalles de implementación de la interfaz de usuario.
Aunque el segundo enfoque podría implementarse más fácilmente en mi caso particular, creo que tomaré el primero, porque será más fácil crear y mantener formas complejas a largo plazo. Leí el documento en el enlace y el patrón de MGM parece encajar como guante para mí. Muchas gracias. –