2012-09-17 47 views
1

我是FluentNHibernate的新手。我正在使用AutoMapping。比方说,我有一个由NHibernate生成的数据库。有一个表,命名为2列Fluent NHibernate.Automapping更改数据库中的数据类型

文档
  • 编号:诠释
  • 说明:为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"); 
    } 
} 

没有错误,但没有发生任何事情,列描述仍然是nvarchar(255)。我不知道我在这里错过了什么。任何想法感激!谢谢

+0

你缺少数据库中创建或更新... –

+0

@DanielHilgarth:您好,我是这么认为的,但我不知道如何得到它更新 – Ragnarsson

回答

0

SchemaUpdate无法更改列只添加它。但是,您可以重新创建(删除并创建)它。另外,如果您将文本字段的长度设置为特定阈值(通常为8k),那么大多数驱动程序将创建“文本”而不​​是“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);