1

我是 FluentNHibernate 的新手。我正在使用自动映射。假设我有一个由 NHibernate 生成的数据库。有一个名为 Document 的表,有 2 列

  • 编号:整数
  • 说明:nvarchar(255)

映射到这个类

public class Document
{
    public virtual int Id { get; set; }
    public virtual string Description{ get; set; }
}

我想将描述的数据类型从 nvarchar(255) 更改为数据库中的文本,所以我创建了一个控制台应用程序,如下所示:

public class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Start process");           

        AutoMap.AssemblyOf<Document>().Override<Document>(y => y.Map(x => x.Description).CustomSqlType("text"));         

        Console.WriteLine("End process");
    }
}

没有错误,但什么也没发生,Description 列仍然是 nvarchar(255)。我不知道我在这里错过了什么。任何想法表示赞赏!谢谢

4

1 回答 1

0

SchemaUpdate 不能更改列,只能添加它。但是,您可以重新创建(删除并创建)它。此外,如果您将文本字段的长度设置为超过特定阈值(通常为 8k),那么大多数驱动程序将创建等效的“text”而不是“varchar”。

var config = Fluently.Configure()
    .Database(...)
    .Mappings(m => m.Automapping.Add(AutoMap.AssemblyOf<Document>().Override<Document>(y => y.Map(x => x.Description).Length(20000)))
    .BuildConfiguration();

new SchemaExport(config).Create(true, true);
于 2012-09-19T13:12:59.083 回答