Custom file generation

Posts   
 
    
Kris Nobels avatar
Posts: 118
Joined: 02-Apr-2008
# Posted on: 10-Sep-2011 16:57:51   

Hello,

This is just a question and i need to know if this is possible.

Now here is the thing:

Currently i use ASP.NET MVC (Razor) and i use the Entity as model.

I use Annotations for validation, display text in multiple languages.

So far everything works great.

Also I use a project where only my resource files are located.

This is the example class:

using System;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
namespace InoPower.DAL.EntityClasses
{
    [MetadataType(typeof(ExampleEntityMetaData))]
    public partial class ExampleEntity
    {
        public class ExampleEntityMetaData
        {
            [Required(ErrorMessage = "'ID' is required.")]
            public Guid Id { get; set; }

            [Display(Name = "Voornaam", ResourceType = typeof(Resources.Resources))]
            [Required(ErrorMessageResourceType = typeof(Resources.Resources), ErrorMessageResourceName = "Voornaam_Required")]
            [StringLength(50, ErrorMessageResourceName = "Voornaam_StringLength", ErrorMessageResourceType = typeof(Resources.Resources))]
            public string Voornaam { get; set; }


            [Display(Name = "Achternaam", ResourceType = typeof(Resources.Resources))]
            [Required(ErrorMessageResourceType = typeof(Resources.Resources), ErrorMessageResourceName = "Achternaam_Required")]
            [StringLength(50, ErrorMessageResourceName = "Achternaam_StringLength", ErrorMessageResourceType = typeof(Resources.Resources))]
            public string Naam { get; set; }


            [Display(Name = "Bedrijfsnaam", ResourceType = typeof(Resources.Resources))]
            [StringLength(50, ErrorMessageResourceName = "Bedrijfsnaam_StringLength", ErrorMessageResourceType = typeof(Resources.Resources))]
            public string Firmanaam { get; set; }

            [Display(Name = "Emailadres", ResourceType = typeof(Resources.Resources))]
            [Required(ErrorMessageResourceType = typeof(Resources.Resources), ErrorMessageResourceName = "Emailadres_Required")]
            [StringLength(100, ErrorMessageResourceName = "Emailadres_StringLength", ErrorMessageResourceType = typeof(Resources.Resources))]
            [RegularExpression(@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$", ErrorMessageResourceName = "Emailadres_Regex", ErrorMessageResourceType = typeof(Resources.Resources))]
            public string EmailAdress { get; set; }

            [Display(Name = "Telefoonnummer", ResourceType = typeof(Resources.Resources))]
            [Required(ErrorMessageResourceType = typeof(Resources.Resources), ErrorMessageResourceName = "Telefoonnummer_Required")]
            [StringLength(15, ErrorMessageResourceName = "Telefoonnummer_StringLength", ErrorMessageResourceType = typeof(Resources.Resources))]
            [RegularExpression(@"^\d{10,15}", ErrorMessageResourceName = "Telefoonnummer_Regex", ErrorMessageResourceType = typeof(Resources.Resources))]
            public string Telefoon { get; set; }

            [Display(Name = "Adres", ResourceType = typeof(Resources.Resources))]
            [Required(ErrorMessageResourceType = typeof(Resources.Resources), ErrorMessageResourceName = "Adres_Required")]
            [StringLength(200, ErrorMessageResourceName = "Adres_StringLength", ErrorMessageResourceType = typeof(Resources.Resources))]
            public string Adres { get; set; }

            [Display(Name = "Woonplaats", ResourceType = typeof(Resources.Resources))]
            [Required(ErrorMessageResourceType = typeof(Resources.Resources), ErrorMessageResourceName = "Woonplaats_Required")]
            [StringLength(200, ErrorMessageResourceName = "Woonplaats_StringLength", ErrorMessageResourceType = typeof(Resources.Resources))]
            public string Woonplaats { get; set; }

            [Display(Name = "Land", ResourceType = typeof(Resources.Resources))]
            [Required(ErrorMessageResourceType = typeof(Resources.Resources), ErrorMessageResourceName = "Land_Required")]
            public Guid LandId { get; set; }

            [Display(Name = "VraagOfOpmerking", ResourceType = typeof(Resources.Resources))]
            [StringLength(2147483647, ErrorMessageResourceName = "VraagOfOpmerking_StringLength", ErrorMessageResourceType = typeof(Resources.Resources))]
            public string OpmerkingOfVraag { get; set; }

            [DisplayName("Aanvraagtijd")]
            public DateTime Aanvraagtijd { get; set; }

        }
    }
}

Now here are my questions:

  • Is it possible to generate a partial class (with LLBLgen) whith Annotations like the example above?
  • Is it possible to generate this only once ?(Because Regex is something custom i need to add)
  • Is there any way to specify what the content of the annotions need to be?
  • Must i use T4 of other class file generator to get this result?

thanks

Kris

daelmo avatar
daelmo
Support Team
Posts: 8245
Joined: 28-Nov-2005
# Posted on: 11-Sep-2011 20:35:22   

Kris wrote:

Now here are my questions:

[list]Is it possible to generate a partial class (with LLBLgen) whith Annotations like the example above?

Yes, it is. See this example: http://llblgen.com/tinyforum/Messages.aspx?ThreadID=18673&StartAtMessage=0&#104946

Kris wrote:

Is it possible to generate this only once ?(Because Regex is something custom i need to add)

You can use your custom USER_CODE_REGIONs as explained here.

Kris wrote:

Is there any way to specify what the content of the annotions need to be?

Well if you use the attribute system, you can use Attribute Definition Macro Definitions.

Now, as you are using your own template, you can write your own settings at Project, Entity or Field level. Once you define those settings, you can set them to your objects (project, entities, fields, etc.). Then you can use those attributes at your templates. For more information read Defining and consuming custom settings values.

Kris wrote:

Must i use T4 of other class file generator to get this result?

No, you don't need T4.

Related threads: http://llblgen.com/tinyforum/Messages.aspx?ThreadID=19731&StartAtMessage=0&#111280 http://llblgen.com/tinyforum/Messages.aspx?ThreadID=18323

David Elizondo | LLBLGen Support Team