Skip to main content

Model Generator Helper Released

Model Generator Helper is a small program that will allow you to easily create view models from your logic models by copying the logic model's properties and the properties' attributes. The original purpose of the program was to copy the validation annotations to my view models so that I would not have to copy and paste them. The program can also read the ColumnAttribute of Linq2SQL generated classes and create DataAnnotation attributes for them (e.g.: Requires attribute and the StringLength attribute).

Sometimes you want to pass to your views a class different from your raw classes generated from the database. For example, lets say we have this logical model classes:

class Payment
{
   [Max(1200)]
   public int Amount {get; set;}

   public int PersonID {get; set;}
}

class Person
{
   [StringLength(50)]
   public string Name {get; set;}

   public int PersonID {get; set;}
}

And you need a View model for your view that allows the user to edit the name of the person doing the payment and the amount paid. This program will allow you to copy the Amount property (and its validation) and the Person's Name property (and its validations), that way you don't repeat yourself by typing the same validations. The generated class would look something like this:
partial class PaymentView
{
   [StringLength(50)]
   public string Name {get; set;}
   [Max(1200)]
   public int Amount {get; set;}

   public int PersonID {get; set;}
}

The program will also generate methods for loading property values from the original model classes, providing basic mapping. For more advanced mapping please consider using AutoMapper together with this program. If you make changes to your original logical classes, you can tell the program to "refresh" the generated models to update the properties' types and attributes.

Comments

Popular posts from this blog

Powershell script for converting JPG to TIFF

The following Powershell script will convert a batch of JPEG files to TIFF format: #This Code is released under MIT license [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") $files_folder = 'C:\path-where-your-jpg-files-are\' $pdfs = get-childitem $files_folder -recurse | where {$_.Extension -match "jpg"} foreach($pdf in $pdfs) { $picture = [System.Drawing.Bitmap]::FromFile( $pdf.FullName ) $tiff = $pdf.FullName.replace('.PDF','').replace('.pdf','').replace('.jpg','').replace('.JPG','') + '.tiff' $picture.Save($tiff) }

Power Automate: SFTP action "Test connection failed"

When I added an SFTP create file action to my Power Automate flow ( https://flow.microsoft.com ) , I got the following error in the action step, within the designer: "Test connection failed" To troubleshoot the Power Automate connection, I had to: go the Power Automate portal then "Data"->"Connections"  the sftp connection was there, I clicked on the ellipsis, and entered the connection info It turns out, that screen provides more details about the connection error. In my case, it was complaining that "SSH host key finger-print xxx format is not supported. It must be in 'MD5' format". I had provided the sha fingerprint that WinScp shows. Instead, I needed to use the MD5 version of the fingerprint. To get that, I had to run in command line (I was in a folder that had openssh in it): ssh -o FingerprintHash=md5 mysftpsite.com To get the fingerprint in MD5 format. I took the string (without the "MD5:" part of the string) and put

Alert if file missing using Powershell

The following Powershell script can be used to send an email alert when a file is missing from a folder or it is the same file from a previous check: $path_mask = "yourfile_*.txt" $previous_file_store = "lastfileread.txt" $script_name = "File Check" ###### Functions ########## Function EMailLog($subject, $message) {    $emailTo = "juanito@yourserver.com"    $emailFrom = "alert@yourserver.com"    $smtpserver="smtp.yourserver.com"       $smtp=new-object Net.Mail.SmtpClient($smtpServer)    $smtp.Send($emailFrom, $emailTo, $subject, $message) } Try {    #get files that match the mask    $curr_file = dir $path_mask |  select name    if ($curr_file.count -gt 0)    {        #file found        #check if the file is different from the previous file read        $previous_file = Get-Content $previous_file_store        $curr_file_name = $curr_file.Item(0).Name        if ($