Fluent NHibernate ignorando nome della colonna sulla proprietà Id overrided
-
26-10-2019 - |
Domanda
Ho una classe astratta di base che eredita classe di entità di Sharp Arch:
/// <summary>
/// defines an entity that will ne indexed by a search crawler and offered up as full-text searchable
/// </summary>
public abstract class IndexedEntity : Entity
{
[DocumentId]
public override int Id
{
get { return base.Id; }
protected set { base.Id = value; }
}
}
Questo è quello di un db legacy e in realtà la colonna ID si chiama "HelpPageID", quindi ho un po 'di esclusione mappatura come:
mapping.Id(x => x.Id, "HelpPageID");
L'SQL generato per l'interrogazione HelpPage
funziona benissimo quando Entity
semplicemente ereditare. Ma ereditando IndexedEntity
, quando tradotto in SQL, il nome della colonna di override viene ignorato e invece Id
viene utilizzato per la colonna, non riuscendo in tal modo.
Modifica Sembra un problema generale con una sostituzione come mettere l'override direttamente nella classe ha lo stesso effetto netto
Soluzione
le sostituzioni di mappatura vengono effettuate solo per il tipo esatto non tipi che sottoclasse del tipo in mappingoverride. è necessario specificare un override per la sottoclasse.