Dominio
Entidades y mapeo de O/R
Visión general
El nivel de dominio contiene todas las clases de entidad que se asignan a las tablas de base de datos. Algunas de las clases más utilizadas son:
Cliente
Prestamo
Actividad
Contacto
Producto
MedioArchivo
Una clase de entidad en un "objeto CLR sin formato" (POCO) o (No anemicos). Por lo general, representa una tabla de base de datos, y cada propiedad suele representar una columna de la tabla
EntidadBase
Una clase de entidad concreta debe derivar de la clase abstracta EntidadBase. Por convención:
EntidadBase.Id
se utiliza como clave principalTodas las propiedades públicas con un getter y un setter se incluirán en el esquema de la base de datos.
Para personalizar las convenciones de asignación predeterminadas:
Utilice los atributos DataAnnotation en clases y propiedades.
Escriba el código de asignación de la API de Fluent
Puede parecer un poco desordenado a primera vista, pero es una buena práctica mantener la asignación de la clase de entidad y la API de Fluent en un solo archivo de código.
Por razones de rendimiento, Crono no utiliza clases de proxy para la carga diferida, sino la interfaz. Por lo tanto, se declara en la clase una propiedad protegida que permite la carga diferida de las propiedades de navegación. No es necesario insertar el servicio, la propiedad se inserta automáticamente cuando se adjunta una entidad al contexto. Si se carga una entidad sin que se realice un seguimiento, o si se separa manualmente del contexto, se inyectará en su lugar el - que no hace nada - en su lugar. ILazyLoader
LazyLoader
EntidadBase
CargadorDiferido
CargadorDiferidoNulo
Ejemplo de uso del cargador diferido:
Ensamblados de dominio
Al iniciar la aplicación, Crono analiza todos los ensamblados principales de la aplicación en busca de tipos de entidad. Si ha creado una nueva clase de entidad y desea que sea accesible, existen diferentes enfoques en función del tipo de proyecto.
En un proyecto principal, simplemente extienda la clase parcial. CronoDbContexto
En un proyecto de módulo, debe informar a Entity Framework de que el ensamblado del módulo contiene tipos de entidad para recoger y registrar en el inicio.
Para ello necesitas una clase de iniciación.
Para mayor comodidad durante el desarrollo, puede agregar esta extensión:
Características de la entidad
Se pueden implementar numerosas interfaces y se pueden derivar algunas clases base abstractas para especificar lo que una entidad tiene, admite o representa.
Los siguientes tipos declaran algunas propiedades que la entidad debe implementar para seguir el contrato.
Interfaces
IAclRestringido
Tiene resticciones de acceso
IAuditable
Tiene propiedades de auditoría
IEntidadVisualizada
Se muestra de alguna manera en la interfaz de usuario
IOrdenVisualizacion
Se puede ordenar
IEntidadLocalizada
Es localizable (traducible)
IEntidadNombrada
Tiene un nombre conceptual
IDatosCombinados
Tiene datos combinables
IReglasContenedor
En un contenedor para otras reglas
IEliminacionLogica
Es eliminación logica (temporal)
IOrganizacionRestringido
Admite el mapeo de organizaciones
ITransitorio
Admite la transitoriedad
Clases base abstractas
EntidadConAtributos
Tiene atributos genéricos
UsuarioContenido
Representa el contenido introducido por el usuario
Last updated