Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Override for fluent NHibernate for long text strings nvarchar(MAX) not nvarchar(255)

When ever you set a string value in fluent NHibernate it alwasy sets the DB vales to Nvarchar(255), I need to store quite a lot of long string which are based on user inputs and 255 is impractical.

Just to add this is an issue with the automapper as I am using fluent NHibernate to build the database.

like image 655
TheAlbear Avatar asked Feb 26 '10 16:02

TheAlbear


1 Answers

Adding this convention will set the default length for string properties to 10000. As others have noted, this will be a nvarchar(max) column.

public class StringColumnLengthConvention : IPropertyConvention, IPropertyConventionAcceptance {     public void Accept(IAcceptanceCriteria<IPropertyInspector> criteria)     {         criteria.Expect(x => x.Type == typeof(string)).Expect(x => x.Length == 0);     }     public void Apply(IPropertyInstance instance)     {         instance.Length(10000);     } } 

Conventions can be added to an automap configuration like this:

Fluently.Configure()     .Mappings( m =>         m.AutoMappings.Add( AutoMap.AssemblyOf<Foo>()         .Conventions.Add<StringColumnLengthConvention >())) 

For more information, see Conventions in the Fluent NHibernate wiki.

like image 69
Lachlan Roche Avatar answered Sep 22 '22 13:09

Lachlan Roche