Frage

das Verhalten der FNH ist standardmäßig Aufzählungen in seine String in der db abzubilden.

Aber während Abbilden eines ENUM als Teil eines zusammengesetzten Schlüssel, wird die Eigenschaft als int abgebildet.
z.B.
in diesem Fall

  public class Address : Entity
  {
    public Address() { }
    public virtual AddressType Type { get; set; }
    public virtual User User { get; set; }

Wo AddresType ist von

  public enum AddressType
  {
    PRESENT, COMPANY, PERMANENT
  }

Der FNH-Mapping ist als

 mapping.CompositeId().KeyReference(x => x.User, "user_id").KeyProperty(x => x.Type);

das Schema-Erstellung dieses Kartierungsergebnisse in

create table address (
    Type INTEGER not null,
   user_id VARCHAR(25) not null,

und die hbm als

<composite-id mapped="true" unsaved-value="undefined">
  <key-property name="Type" type="Company.Core.AddressType, Company.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
    <column name="Type" />
  </key-property>
  <key-many-to-one name="User" class="Company.Core.CompanyUser, Company.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
    <column name="user_id" />
  </key-many-to-one>
</composite-id>

Wenn die Address sollte, wie sie erzeugt werden,

type="FluentNHibernate.Mapping.GenericEnumMapper`1[[Company.Core.AddressType,

Wie kann ich anweisen FNH zu mappit als Standard-Zeichenfolge Enum generische Mapper?

War es hilfreich?
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top