Domanda

Al momento sto lavorando con un database brownfield, che contiene una tabella che contiene i dati per 3 diversi tipi di attività. Ha a che fare con SalesOrders e righe d'ordine. Nella vecchia applicazione, siamo stati in grado di aggiungere 3 tipi di righe d'ordine a ogni SalesOrder: i prodotti, le tariffe orarie e le linee di testo. 15 anni fa, questa era una soluzione rapida e sporca per ottenere le query semplici in Delphi per ottenere tutte le linee in una datagrid. Ogni

Ora sto cercando di costruire il modello a oggetti in C # utilizzando NHibernate. Ho fatto 3 entità separate, senza una classe di base, a causa del fatto che questi 3 tipi di linea non hanno alcun nesso logico vero e proprio business. Tuttavia, voglio ottenere questi 3 tipi in una lista in modo che io possa ordinare.

Ho pensato di utilizzare ereditarietà, tabella per ogni classe, come la tavola soddisfa i requisiti (nessuna colonna con un sistema di ritenuta non-null). Questo non è un passo logico, però, dal momento che il business in base alla tipologia è completamente diverso (solo cose in comune sono userId, descrizione e le osservazioni). Forse un componente? ma come mappare le proprietà a 3 classi diverse, senza una classe di base o qualsiasi tipo di collegamento, tranne il nome della tabella?

spero che voi ragazzi capito quello che ho scritto. Non ho il codice vero e proprio ancora, stavo solo abbozzando alcune cose su carta su come trattare con questo codice.

Chiunque qui che mi può aiutare per la mia strada?

Cordiali saluti, Ted

È stato utile?

Soluzione

Si potrebbe mettere un'interfaccia sui tre entità e la mappa come classe base, tutto allo stesso tavolo:

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
{
  // ...
}

Mapping:

<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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top