2012-09-17 4 views
1

Je suis nouveau à FluentNHibernate. Je travaille avec AutoMapping. Disons que j'ai une base de données générée par NHibernate. Il y a une table, nommée document avec 2 colonnesFluent NHibernate.Automapping modifier le type de données dans la base de données

  • Id: int
  • Description: nvarchar (255)

qui est mis en correspondance avec cette classe

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

Je veux changer type de données de Description de nvarchar (255) à texte dans la base de données, donc j'ai créé une application de la console comme suit:

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

Il n'y a pas d'erreur, mais rien ne s'est passé, la colonne Description est toujours nvarchar (255). Je ne sais pas ce qui me manque ici. Toute pensée appréciée! Merci

+0

Il vous manque la création de bases de données ou mise à jour ... –

+0

@DanielHilgarth: Salut, je pense, mais je ne sais pas comment l'obtenir mis à jour – Ragnarsson

Répondre

0

SchemaUpdate ne peut pas modifier les colonnes que l'ajouter. Cependant vous pouvez recréer (laisser tomber et créer). Aussi, si vous définissez la longueur d'un champ de texte sur un seuil spécifique (souvent 8k) alors la plupart des pilotes créeront l'équivalent de "texte" au lieu de "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); 
Questions connexes