我是FluentNHibernate的新手。我正在使用AutoMapping。比方说,我有一个由NHibernate生成的数据库。有一个表,名为Document with two columns
映射到此类
public class Document
{
public virtual int Id { get; set; }
public virtual string Description{ get; set; }
}
我想将描述的数据类型从nvarchar(255)更改为Database中的文本,因此我创建了一个控制台应用程序,如下所示:
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)
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);