0

J'ai une classe:NHibernate fluide: Comment modifier le type sql sous-jacent pour une collection de chaînes automappée?

public class ParentClass 
{ 
    //other stuff 
    IList<string> ChildPages 
} 

Quand 'IList<string> ChildPages' obtient automapped par Courant NHibernate une table de jointure 'ChildPages' est créé avec un champ de support nvarchar(255) pour chaque chaîne dans la collection.

Mais le problème est que je veux que le champ de sauvegarde sql soit 'text', de sorte que je puisse avoir de longues entrées pour cette entité.

Quelle est la manière la plus simple d'apporter cette modification?

Comment modifier le type sous-jacent de collections de primitives automappées?

En outre, pour des points supplémentaires, comment le feriez-vous avec une surcharge de convention ou de mappage?

Thx!

Répondre

1

Vous pouvez configurer une convention de remplacement afin que les chaînes utilisent text au lieu de nvarchar2 (255), comme indiqué dans la solution on this other thread. Si vous ne souhaitez ce comportement pour une propriété spécifique, quelque chose comme ceci dans votre configuration couramment fonctionnerait:

AutoMap 
    .AssemblyOf<ParentClass>() 
    .Override<ChildPage>(map => 
     { 
      mapping.Map(x => x.Page).CustomType("StringClob").CustomSqlType("text"); 
     }); 
+0

Merci pour la réponse, mais je ne pense pas que cela fonctionnera parce que « Childpages » est un nom de propriété plutôt qu'un type. –