Search code examples
asp.netnhibernatefluent-nhibernatenhibernate-mapping

Get "No persister for" Error in Fluent NHibernet


I am new in Fluent NHibernet and i am using Fluent NHibernet in my asp.net application

this is my Poco class

public virtual int CategoryId { get; set; }

public virtual string CategoryName { get; set; }

public virtual bool IsActive { get; set; }

public virtual bool IsDeleted { get; set; }

My Mapping Class

 public class clsCategoryMap : ClassMap<clsCategory>
    {
        public clsCategoryMap()
        {
            Id(x => x.CategoryId).Column("CategoryId").GeneratedBy.Assigned().Not.Nullable();
            Map(x => x.CategoryName).Column("CategoryName").Not.Nullable();
            Map(x => x.IsActive).Column("IsActive").Not.Nullable();
            Map(x => x.IsDeleted).Column("IsDeleted").Not.Nullable();
            Table("tblCategory");
        }
    }

Poco class and Mapping class both saprated in class Liberar like: DAL for Poco class and BLL For Mapping class.

And i create helper class it's below:

public class FNHelper
    {
        private static ISessionFactory _sessionfactory;

        private static ISessionFactory SessionFactory
        {
            get
            {
                if (_sessionfactory == null) { InitializationSessionFactory(); }

                return _sessionfactory;
            }
        }

        private static void InitializationSessionFactory()
        {
            _sessionfactory = Fluently.Configure()
           .Database(
               MsSqlConfiguration.MsSql2008
               .ConnectionString(@"Server=test\SQLEXPRESS;Database=TestDB;User ID=sa;Password=root;")
               .DefaultSchema("dbo")
               .ShowSql()
            )
           .Mappings(m => m.FluentMappings.AddFromAssemblyOf<clsCategory>())
           .ExposeConfiguration((cfg => new SchemaUpdate(cfg).Execute(true, true)))
           .BuildSessionFactory();
        }

        public static ISession OpenSession()
        {
            return SessionFactory.OpenSession();
        }

        private static void BuildSchema(NHibernate.Cfg.Configuration configuration)
        {
            String SqliteRefFileName = @"D:\Projects\MeshpsDB.sql";
            if (File.Exists(SqliteRefFileName))
                File.Delete(SqliteRefFileName);

            new SchemaExport(configuration)
              .Create(true, true);
        }
    }

And finally i am doing in my form it's below:

protected void btnSave_Click(object sender, EventArgs e)
        {
            using (var session = FNHelper.OpenSession())
            {
                using (var tranction = session.Transaction)
                {
                    var objCategory = new clsCategory
                    {
                        CategoryId = 0,
                        CategoryName = txtName.Text.Trim(),
                        IsActive = true,
                        IsDeleted = false
                    };
                    session.Save(objCategory);
                    tranction.Commit();
                }
            }
        }

when i click on button then i am getting

enter image description here

so every one please tell me how can i solve this issue.


Solution

  • change m.FluentMappings.AddFromAssemblyOf<clsCategory>() to m.FluentMappings.AddFromAssemblyOf<clsCategoryMap>() because its the mappingss you want to add and these reside in another assembly.