Search code examples
nhibernatefluent-nhibernatesql-server-ce-4

Override Property Mapping with Fluent NHibernate


I have a Fluent NHibernate Mapping that maps a property of a class to use the NHibernate XDocType

  Map(x => x.Content)
            .Not.Nullable()
            .CustomType(typeof (XDocType));

I'm using this as the table column in Sql 2008 db is of type XML.

Currently I'm trying to write some Unit/Integration Tests using Sql CE which does not support the XML Column type.

Is there a simple way when I'm spinning up my Session Factory to say I would like to override the Content column mapping to use a supported type.

An example of how I'm currently spinning up the session factory is below

var sessionFactory = Fluently.Configure()                                 
                                .Database(MsSqlCeConfiguration.Standard.ShowSql().ConnectionString(connectionString))
                                .Mappings(m => m.FluentMappings.AddFromAssemblyOf<MyAssembly>())
                                .ExposeConfiguration((c) =>
                                                         {
                                                             sessionConfig = c;
                                                             new SchemaExport(c).Create(false, true);
                                                         })                                    
                                .BuildSessionFactory();

Thanks.


Solution

  • You should extend the MsSqlCeDialect or MsSqlCe40Dialect and add:

    RegisterColumnType(DbType.Xml, "NTEXT");
    

    That will use the NTEXT SQL type for XDocType/XmlDocType properties.