Pregunta

Actualmente estoy trabajando con una base de datos Brownfield que contiene una tabla que contiene datos para 3 tipos diferentes de negocios. Tiene que ver con los vendedores y las líneas de orden. En la aplicación anterior, pudimos agregar 3 tipos de líneas de orden a cada vendedor de ventas: productos, tarifas por hora y líneas de texto. Hace 15 años, esta fue una solución rápida y sucia para obtener consultas fáciles en Delphi para obtener todas las líneas en un datagrid. Cada

Ahora estoy tratando de construir el modelo de objeto en C# usando nHibernate. He hecho 3 entidades separadas sin una clase base, debido al hecho de que estos 3 tipos de línea no tienen una conexión lógica comercial real. Sin embargo, quiero meter estos 3 tipos en una lista para poder pedirlos.

He considerado usar herencia, tabla por clase, ya que la tabla cumple con los requisitos (sin columnas con una restricción no nula). Sin embargo, este no es un paso lógico, ya que el negocio por tipo es completamente diferente (solo las cosas en común son ID de usuario, descripción y observaciones). ¿Quizás un componente? Pero, ¿cómo mapear las propiedades a 3 clases diferentes sin una clase base o ningún tipo de enlace, excepto el nombre de la tabla?

Espero que hayan entendido lo que escribí. Todavía no tengo código real, solo estaba dibujando algunas cosas en papel sobre cómo lidiar con este código.

¿Alguien aquí que pueda ayudarme en mi camino?

Saludos cordiales, Ted

¿Fue útil?

Solución

Puede poner una interfaz en las tres entidades y asignarla como una clase base, todo a la misma tabla:

interface IWhatever 
{
  // central Id for the whole table
  int Id { get; set; }
  // may be some more properties
}

class Product : IWhatever
{
  // ...
}

class HourlyRate : IWhatever
{
  // ...
}

class TextLines : IWhatever
{
  // ...
}

Cartografía:

<class name="IWhatever" table="MyBigTable">

  <id .../>
  <discriminator column="Type"/>
  <subclass name="Product" discriminator-value="P">
    <!-- ... -->
  </subclass>
  <subclass name="HourlyRate" discriminator-value="HR">
    <!-- ... -->
  </subclass>
  <subclass name="TextLines" discriminator-value="TL">
    <!-- ... -->
  </subclass>
</class>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top