2012-09-17 44 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); 
相關問題