Skip to content
Eros Stein edited this page Jan 8, 2017 · 28 revisions

Welcome to the blayer wiki! Here you'll find detailed information on how to use the library.

Here's how to get started:

Project Structure

You only need one project to handle your domain interactions to work with Blayer.Data, but desirably you'd have the following structure:

  • Create 2 projects:

    1. Your.Namespace.Domain
    2. Your.Namespace.Poco
  • Add Blayer.Data to your domain project

Inside the domain project

Folders:

  1. AdditionalSteps
  2. ModelConfiguration
  3. Notifications
  4. Repositories
  5. Validations

A file in the root of the project named AppConfiguration (just an example) with the content:

namespace UserNamespace
{
    public class AppConfiguration : RepositoryConfiguration
    {
    }
}

This project should reference Blayer.Data and Your.Namespace.Poco (if you have that project).

Inside the POCO project

Just your regular POCO classes

Setting up the templates

Copy the folders under Blayer.Data/Templates to:

C:\Program Files (x86)\<your_vs_version>\Common7\IDE\ItemTemplates\CSharp\Blayer

Example:

C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\ItemTemplates\CSharp\Blayer

This will allow you to use the code templates provided to be used with Blayer.

Optional, but very likely you'll need to do it, step

It's very likely VS won't just reload and show you the new templates, so you might need to:

  1. Close all instances of Visual Studio.
  2. Delete the ItemTemplateCache folder inside C:\Program Files (x86)\<your_vs_version>\Common7\IDE
  3. On the Start menu, click Run, type cmd, and click OK.
  4. At the command prompt, locate the directory that contains devenv.exe, and type devenv /installvstemplates.
  5. Run devenv /setup.
  6. Run Visual Studio.

More information:

Explanation of the interfaces IAdditionalStep, IValidate and INotify

IAdditionalStep

Is used when we need to execute actions post validations. This is used for repetitive tasks that happen every time a record is created/updated and/or removed.

Example:

Let's say we need to change the date and time of the last operation in a record. We create a class implementing IAdditionalStep and use the following code:

switch (state)
{
    // If the entity was added (data creation)
    case System.Data.Entity.EntityState.Added:
        {
            entity.LastAction = DateTime.Now;
        }
        break;
    // If the entity was removed (data removal)
    case System.Data.Entity.EntityState.Deleted:
        {

        }
        break;
    // If the entity was updated (data update)
    case System.Data.Entity.EntityState.Modified:
        {
            entity.LastAction = DateTime.Now;
        }
        break;
    default:
        break;
}

This way every time we add or update one of the records represented by this repository the property LastAction will be automatically updated.

IValidate

Is ...

INotify

Is ...

Every class implementing any of those interfaces will have a method with a switch inside. Depending on the state of the record a specific section is hit. The properties are as informed below:

  • System.Data.Entity.EntityState state: state of the record. If it is being created, modified or deleted
  • object entityObject:
  • object originalEntity:

Clone this wiki locally