mercoledì 9 maggio 2007

NHibernateRepository Upgraded for NHibernate 1.2 RC1

Now that NHibernate 1.2 is finally out of Beta stage and into official Release Candidate mode, I felt it was appropriate to upgrade NHibernateRepository to use it. Not much has changed and there isn't any new functionality, but I wrote some tests for it and of course updated its references to NHibernate 1.2 RC1.
You can get the latest NHibernateRepository here.

 

Fonte: http://www.arcware.net/archive/2007/04/06/NHibernateRepository-Upgraded-for-NHibernate-1.2-RC1.aspx

martedì 8 maggio 2007

Simple TDD Visual Studio Templates

 

 

To speed up the creation of solutions like these, I've created two templates to plug into Visual Studio to do it for you. There's one for testing with MbUnit 2.3 RTM and one for NUnit 2.2.9. Download the one you want to your VS2005 Project Templates folder and then create a new project. You'll see the options to use the templates automagically.

 

FONTE:

Dan's Archive

 

post:
http://blogs.ipona.com/dan/archive/2007/01/02/SimpleTDDVisualStudioTemplates.aspx

venerdì 27 aprile 2007

Simple NHibernate Architecture

By Cassio Alves.

Introduction

I started using NHibernate at the end of last year and I am having a wonderful experience with it. The simple fact that I don't have to maintain hundreds of procedures and data access abstraction classes to do basic CRUD operations is enough to justify the use of NHibernate (even though I used a custom code generation tool). Besides that, my code is amazingly clearer and simpler. I only need to worry about business and user interface logic now. All that pluming code has gone for good.

I had zero experience with ORM frameworks, so on the first couple of weeks using NHibernate I had a hard time with some issues, like using it with ASP.NET disconnected objects and abstracting NHibernate sessions from the domain layer. After putting in some effort I came out with a nice architecture that abstracts the NHibernate layer and allows me to work with an ASP.NET session.

Background

I am assuming you already have some familiarity with NHibernate. If you are new to NHibernate I encourage you to go to the website and download the reference documentation. I am using NHibernate 1.2 CR1 in this article.

The Architecture

The idea here is to keep my business objects unaware of an NHibernate session. So I created a different project for NHibernate stuff, called Shared.NHibernateDAL. It includes the session and transaction manager classes. I also created a common business object that serves as a base class for all my business entities. This class (BusinessObject) encapsulates the common methods and properties all entities that need to be persisted have, like Save(), Delete(), ID, etc.

Here's a class diagram just to give an idea:

Screenshot - nh_classdiagram.jpg

The Implementation

The main classes on the NHibernateDAL project are the following:

  • NHibernateSessionManager – This is the class responsible for managing the NHibernate session. I've got this class from another NHibernate article on Code Project.
  • TransactionBlock – This is a class I created to manage transactions and abstract it from NHibernate. I will show an example of its use further on this article.
  • BusinessObject<T> - This is the base class for all the business entities I need to persist. It implements the basic CRUD methods.

 

LINK: http://www.codeproject.com/aspnet/NHibernateArchitecture.asp

mercoledì 21 marzo 2007

martedì 20 marzo 2007

Prova nuova di c#

Vediamo se riesco a pubblicare sto codicillo o ci devo diventare scemo + di quello che sono oggi :D

 

 


/*
* Created by: WaYdotNET [Carlo Bertini]
* Created: 18.34.28
* NameSpace: GestioneOttica.DomainModel.Cliente.Anagrafe
*/
using System;

namespace GestioneOttica.DomainModel.Cliente
{
public class Anagrafe
{
#region private fields

private string _nome;
private string _cognome;
private string _codiceFiscale;
private Nullable<DateTime> _dataNascita;
private string _professione;
private string _iva;
private string _ditta;

#endregion

#region protected members

#endregion

#region public properties

public string nome
{
get { return _nome; }
set { _nome = value; }
}

public string cognome
{
get { return _cognome; }
set { _cognome = value; }
}

public string codiceFiscale
{
get { return _codiceFiscale; }
set { _codiceFiscale = value; }
}

public DateTime? dataNascita
{
get { return _dataNascita; }
set { _dataNascita = value; }
}

public string professione
{
get { return _professione; }
set { _professione = value; }
}

public string iva
{
get { return _iva; }
set { _iva = value; }
}

public string ditta
{
get { return _ditta; }
set { _ditta = value; }
}

#endregion

#region system.object overrides

#endregion

#region constructor

#endregion
}
}

giovedì 1 marzo 2007

Struttura OpenOttica

Il nome del programma è "OpenOttica" visto che ho intenzione di rilasciare i codici sorgenti di questo applicativo (appena ho tempo mi leggo un paio di licenze e ve la comunico).

 Prima di tutto va detto che verrà sviluppato con il .NET 2.0 e come database Mysql/SQLExpress/SQLite poi da decidere quale utilizzare in "produzione".

Altra cosa, se un giorno riesco cerco di farlo girare pure su MONO .... ma non credo, visto che ancora ci sono delle PINVOKE che SQLite utilizza e che MONO allo stato attuale non supporta.

 

Incominciamo......

Per realizzare questo progetto, ho intenzione di utilizzare NHibernate

Prima di tutto vediamo come ho intenzione di dividere la struttura del progetto, almeno cosi' se avete intenzione di aiutarmi, criticare, e tutto quello che vi viene in mente, ben accetto :D:D:D:D

 

  • Domain Model 
  • Persistance ( con l integrazione di NHRepository o Rinho.Commons)
  • UI (qui è il caso di vedere se farlo Winform o Webform, od entrambi)
  • Utilities

Fino a qui facile, si tratta semplicemente di 4 progetti di Vs.NET

Ovviamente ci saranno anche i vari test da fare:

  • Domain Model.Test
  • Persistance.Test

Per fare i test utilizzo NUnit

Sistemazione Interfaccia blog

Appena avro' un po di tempo dovrei sistemare almeno l interfaccia del blog e farla un pochino + personalizzata (dato che x ora nn è personalizzata x niente :D:D::D)