我已经玩约与FluentNhibernate作的一部分S#arp架构。下面是一个例子的映射。

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();
    }
}

然后我用的架构,它能够产生输出我的言一文件。

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);

到目前为止一切顺利。但是所产生的言对此表不匹配和实际上包含了一个错误。

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)
)
  • 在枚举的国家的代表是作为一串即使我试图迫使它采用INT
  • 该电话号码长度不相匹配的映射。

我想知道我怎么去调试这一点。这是一个问题的映射在FluentNH或是它的一个问题架构的发电机。如果我能输出xml产生然后我可以验证。没有人知道如何做到这一点?

谢谢,

有帮助吗?

解决方案

流利的配置 允许你的出口XML。

如何最近的是你的拷贝#拱门,更具体地说,你知道什么是修订它能够流利它们使用?

在枚举的类型是正在重写通过一项公约指定枚举应当映如串,而不是使用 CustomSqlType 试试只用 CustomTypeIs<int>().

至于长度的柱,那听起来像一个错误,但是它仍然是一个问题将取决于什么样的版本你正在运行。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top