title: Creating a custom module for Orchard
body: <p>I created a custom module using this <a href="http://docs.orchardproject.net/Documentation/Creating-a-module-with-a-simple-text-editor" rel="nofollow">guide</a> from Orchard documentation, but for some reason I can't see the fields in the content type when I want to  create a new one. </p>
  
  <p>this is my model:</p>
  
  <pre><code>public class CustomerPartRecord : ContentPartRecord
  {
      public virtual string FirstName { get; set; }
      public virtual string LastName { get; set; }
      public virtual int PhoneNumber { get; set; }
      public virtual string Address { get; set; }
      public virtual string Profession { get; set; }
      public virtual string ProDescription { get; set; }
      public virtual int Hours { get; set; }
  }
  public class CustomerPart : ContentPart&lt;CustomerPartRecord&gt;
  {
  
      [Required(ErrorMessage="you must enter your first name")]
      [StringLength(200)]
      public string FirstName { get { return Record.FirstName; } set { Record.FirstName = value; } }
  
      [Required(ErrorMessage = "you must enter your last name")]
      [StringLength(200)]
      public string LastName { get { return Record.LastName; } set { Record.LastName = value; } }
  
      [Required(ErrorMessage = "you must enter your phone number")]
      [DataType(DataType.PhoneNumber)]
      public int PhoneNumber { get { return Record.PhoneNumber; } set { Record.PhoneNumber = value; } }
  
      [StringLength(200)]
      public string Address { get { return Record.Address; } set { Record.Address = value; } }
  
      [Required(ErrorMessage = "you must enter your profession")]
      [StringLength(200)]
      public string Profession { get { return Record.Profession; } set { Record.Profession = value; } }
  
      [StringLength(500)]
      public string ProDescription { get { return Record.ProDescription; } set { Record.ProDescription = value; } }
  
      [Required(ErrorMessage = "you must enter your hours")]
      public int Hours { get { return Record.Hours; } set { Record.Hours = value; } }
  }
  </code></pre>
  
  <p>this is the Handler:</p>
  
  <pre><code>class CustomerHandler : ContentHandler
  {
      public CustomerHandler(IRepository&lt;CustomerPartRecord&gt; repository)
      {
          Filters.Add(StorageFilter.For(repository));
      }
  }
  </code></pre>
  
  <p>the Driver:</p>
  
  <pre><code>class CustomerDriver : ContentPartDriver&lt;CustomerPart&gt;
  {
      protected override DriverResult Display(CustomerPart part, string displayType, dynamic shapeHelper)
      {
          return ContentShape("Parts_Customer", () =&gt; shapeHelper.Parts_Customer(
              FirstName: part.FirstName,
              LastName: part.LastName,
              PhoneNumber: part.PhoneNumber,
              Address: part.Address,
              Profession: part.Profession,
              ProDescription: part.ProDescription,
              Hours: part.Hours));
      }
      //GET
      protected override DriverResult Editor(CustomerPart part, dynamic shapeHelper)
      {
          return ContentShape("Parts_Customer", () =&gt; shapeHelper.EditorTemplate(
              TemplateName:"Parts/Customer",
              Model: part,
              Prefix: Prefix));
      }
      //POST
      protected override DriverResult Editor(CustomerPart part, IUpdateModel updater, dynamic shapeHelper)
      {
          updater.TryUpdateModel(part, Prefix, null, null);
          return Editor(part, shapeHelper);
      }
  </code></pre>
  
  <p>the migration:</p>
  
  <pre><code>public class Migrations : DataMigrationImpl
  {
      public int Create()
      {
          // Creating table CustomerPartRecord
          SchemaBuilder.CreateTable("CustomerPartRecord", table =&gt; table
              .ContentPartRecord()
              .Column("FirstName", DbType.String)
              .Column("LastName", DbType.String)
              .Column("PhoneNumber", DbType.Int32)
              .Column("Address", DbType.String)
              .Column("Profession", DbType.String)
              .Column("ProDescription", DbType.String)
              .Column("Hours", DbType.Int32)
          );
          return 1;
      }
      public int UpdateFrom1()
      {
          ContentDefinitionManager.AlterPartDefinition("CustomerPart",
            builder =&gt; builder.Attachable());
          return 2;
      }
      public int UpdateFrom2()
      {
          ContentDefinitionManager.AlterTypeDefinition("Customer", cfg =&gt; cfg
            .WithPart("CommonPart")
            .WithPart("RoutePart")
            .WithPart("BodyPart")
            .WithPart("CustomerPart")
            .WithPart("CommentsPart")
            .WithPart("TagsPart")
            .WithPart("LocalizationPart")
            .Creatable()
            .Indexed());
          return 3;
      }
  
  }
  </code></pre>
  
  <p>Can someone please tell me if I am missing something? </p>