Question

I am generating schema using nhibnernate, but its not generating it is not considering the constraints:

 public class Person
    {
        public virtual int Id { get; set; }

        [NotNull]
        public virtual string name { get; set; }
    }

public class PersonMap : ClassMapping<Person>
    {
        public PersonMap()
        {
            Id(x => x.Id);
            Property(x => x.name);
        }
    }

public class PersonVal : ValidationDef<Person>
    {
        public PersonVal()
        {
            Define(x => x.name).NotNullable();
        }
    }

I am attaching the validation to configuration as follows:

    public static void SetupNHibernateValidator(Configuration config)
            {
                var nhvConfiguration = new FluentConfiguration();

                nhvConfiguration
                    .SetDefaultValidatorMode(ValidatorMode.UseAttribute)
                    .Register(Assembly.Load("ClassLibrary2").ValidationDefinitions());

                nhvConfiguration
                    .IntegrateWithNHibernate
                    .ApplyingDDLConstraints()
                    .RegisteringListeners();


                //nhvConfiguration.Register(new [] { typeof(Person) });    
                nhvConfiguration.Register(new [] { typeof(PersonVal) });

                ValidationEngine = new ValidatorEngine();
                ValidationEngine.Configure(nhvConfiguration);

                ValidatorInitializer.Initialize(config, ValidationEngine);
            }

        public static ISessionFactory BuildSessionFactory()
        {
            const string ConnectionString = @"XYZ";

            _nhConfiguration = new Configuration( db =>
db.Dialect<MsSql2008Dialect>();
                db.Driver<SqlClientDriver>();
                db.KeywordsAutoImport = Hbm2DDLKeyWords.AutoQuote;
                db.IsolationLevel = IsolationLevel.ReadCommitted;
                db.ConnectionString = connection;
                db.Timeout = 10;);


            ValidationProvider.SetupNHibernateValidator(_nhConfiguration);
            var mapping = GetMappings();
            _nhConfiguration.AddDeserializedMapping(mapping, "ClassLibrary2");
            return _sessionFactory = _nhConfiguration.BuildSessionFactory();
        }

and the output generated is:

create table Person (
        Id INT not null,
       name NVARCHAR(255) null,
       primary key (Id)
    )

what can be the problem?? the NAME field is still defined as NULL, it should have been NOT NULL.

Sorry guys, i know its too much code...

Thanks for help...

EDIT

i am using mapping by code

using NHibernate.Validator.Cfg.Loquacious;
    public class PersonVal : ValidationDef<Person>


using NHibernate.Mapping.ByCode.Conformist;
        public class PersonMap : ClassMapping<Person>

using NHibernate.Validator.Constraints;
            public class Person
Was it helpful?

Solution

The issue was with line:

Register(Assembly.Load("ClassLibrary2").ValidationDefinitions()

I have replaced it with:

Register(Assembly.Assembly.GetExecutingAssembly().ValidationDefinitions())
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top