Pregunta

He estado jugando con FluentNhibernate como parte de la arquitectura S # arp. A continuación se muestra un ejemplo de mapeo.

public class EventBaseMap : ClassMap<EventBase>
{
    public EventBaseMap()
    {
        WithTable("Event_Header");
        //NotLazyLoaded(); 

        Id(x => x.Id).WithUnsavedValue(-1).GeneratedBy.Native();

        Map(x => x.Name).WithLengthOf(50).Not.Nullable();
        Map(x => x.Description).WithLengthOf(255);
        Map(x => x.Rating);
        Map(x => x.Price);
        Map(x => x.PhoneNumber).WithLengthOf(20).Not.Nullable();
        Map(x => x.EmailAddress);
        Map(x => x.Website);
        Map(x => x.State).Not.Nullable().CustomSqlTypeIs("INT");

        Component(x => x.Ages, m =>
         {
             m.Map(x => x.From).TheColumnNameIs("AgeFrom");
             m.Map(x => x.To).TheColumnNameIs("AgeTo");
         });

        HasMany(x => x.Calendar).AsBag();

        HasManyToMany(x => x.Tags)
            .WithTableName("Event_Tags")
            .WithParentKeyColumn("EventId")
            .WithChildKeyColumn("TagId").AsBag();
    }
}

Luego uso la generación del esquema Nhibernate para enviar mi ddl a un archivo.

FileInfo t = new FileInfo(Server.MapPath("~/bin/MyDDL.sql"));
        StreamWriter writer = t.CreateText();

        new SchemaExport(cfg).Execute(true, false, false, true, NHibernateSession.Current.Connection, writer);

Hasta ahora todo bien. Sin embargo, el ddl generado para esta tabla no coincide y en realidad contiene un error.

create table Event_Header (
   Id INT IDENTITY NOT NULL,
   EmailAddress NVARCHAR(255) null,
   PhoneNumber NVARCHAR(255) null,
   State string null,
   Website NVARCHAR(255) null,
   Description NVARCHAR(255) null,
   Name NVARCHAR(255) null,
   Price DECIMAL(19,5) null,
   Rating INT null,
   AgeTo INT null,
   AgeFrom INT null,
   primary key (Id)
)
  • El estado Enum se representa como una cadena aunque intenté forzarlo a usar INT
  • La longitud del número de teléfono no coincide con la asignación.

Me preguntaba cómo hago para depurar esto. ¿Es este un problema con la asignación en FluentNH o es un problema con el generador de esquemas? Si pudiera generar el xml producido, podría verificarlo. ¿Alguien sabe cómo hacer esto?

Gracias,

¿Fue útil?

Solución

Configuración fluida le permite exportar el XML.

¿Qué tan reciente es su copia de #arch, y más específicamente, sabe qué revisión de NHibernate Fluent está usando?

La enum es tipo está siendo anulada por una convención que especifica que las enumeraciones deben asignarse como cadenas, en lugar de usar CustomSqlType intente simplemente usando CustomTypeIs<int>().

En cuanto a la longitud de las columnas, eso suena como un error, pero si sigue siendo un problema dependerá de la versión que esté ejecutando.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top