- Home
- LLBLGen Pro
- LLBLGen Pro Runtime Framework
Custom file generation
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
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𙧲
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𛊰 http://llblgen.com/tinyforum/Messages.aspx?ThreadID=18323