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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top