private void BindClass(System.Type entity, PersistentClass pclass)
        {
            pclass.IsLazy             = true;
            pclass.EntityName         = entity.FullName;
            pclass.ClassName          = entity.AssemblyQualifiedName;
            pclass.ProxyInterfaceName = entity.AssemblyQualifiedName;
            string tableName = GetClassTableName(pclass);
            Table  table     = mappings.AddTable(null, null, tableName, null, pclass.IsAbstract.GetValueOrDefault(), null);

            ((ITableOwner)pclass).Table = table;
            pclass.IsMutable            = true;
            PropertyInfo[] propInfos = entity.GetProperties();

            PropertyInfo toExclude = new IdBinder(this, propInfos).Bind(pclass, table);

            pclass.CreatePrimaryKey(dialect);
            BindProperties(pclass, propInfos.Where(x => x != toExclude));
            mappings.AddClass(pclass);

            string qualifiedName = pclass.MappedClass == null ? pclass.EntityName : pclass.MappedClass.AssemblyQualifiedName;

            mappings.AddImport(qualifiedName, pclass.EntityName);
            if (mappings.IsAutoImport && pclass.EntityName.IndexOf('.') > 0)
            {
                mappings.AddImport(qualifiedName, StringHelper.Unqualify(pclass.EntityName));
            }
        }