Una delle soluzioni architetturali che ho imparato ad apprezzare ed utilizzare nel corso degli anni è quella che prevede:
- uno strato Model, contenente una o più entità POCO referenziate tra loro;
- uno strato Repository per l’accesso ai dati;
- uno strato Service;
- uno strato Presentation, che contiene le nostre pagine html/aspx (o le view se sviluppate in asp.net mvc).
Una pratica che vi consiglio caldamente di seguire è di non utilizzare gli oggetti POCO per la loro rappresentazione grafica, ma di affidarvi a dei DTO di appoggio.
In tal senso, oggi ho scoperto un utilissimo metodo fornito da AutoMapper, in sede di creazione della Map tra un oggetto POCO ed un DTO.
1
2
| cfg.CreateMap<User, ViewModel.User.dtoUser>()
.ForMember(dest => dest.Property, opt => opt.NullSubstitute("N/A")) |
L’utilizzo del metodo NullSubstitute vi consente di associare automaticamente un valore string di default nel caso in cui la proprietà risulti essere NULL. (nel mio caso voglio visualizzare N/A nel caso in cui Property sia NULL).
Related Posts:
Tags:
architettura software, asp.net, asp.net mvc, automapper, c#, ingegneria software, model, repository, service
Ieri ho perso metà pomeriggio di lavoro per una mia non conoscenza del mapping delle Entity in Fluent NHibernate.
L’eccezione lanciata da NHibernate:
1
| Association references unmapped class: YourClass |
Il mapping delle mie Entity avviene tramite un metoto CreateSessionFactory:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
FluentNHibernate.Cfg.Fluently.Configure()
.Database
(
FluentNHibernate.Cfg.Db.MsSqlConfiguration.MsSql2008
.ConnectionString(
c => c.Server(DbConnectionValue.Server)
.Username(DbConnectionValue.User)
.Password(DbConnectionValue.Password)
.Database(DbConnectionValue.Database)
)
.ProxyFactoryFactory("
NHibernate.ByteCode.LinFu.ProxyFactoryFactory
,NHibernate.ByteCode.LinFu")
)
.Mappings
(
m => m.FluentMappings
.AddFromAssemblyOf<OneClass.Of.My.Repository>()
)
.BuildSessionFactory(); |
Bisogna fare attenzione che esistono 2 regole affinchè si possa correttamente caricare il mapping di Entity caricate tramite il metodo AddFromAssemblyOf:
1. dichiarare sempre public le classi di mapping;
2. definire sempre le proprietà Id;
Related Posts:
Tags:
asp.net, asp.net mvc, c#, dotnet, nhibernate, orm
Immaginiamo di avere il seguente modello:
1
2
3
4
5
6
7
8
|
public class MyModel
{
public string Cognome { get; set; }
public string Nome { get; set; }
public DateTime DataNascita { get; set; }
} |
Immaginiamo di utilizzare questo modello per renderizzare una View. Successivamente, questa ipotetica View restituirà in post lo stesso Modello.
Una delle scelte archiettturali che si può seguire, è quella di serializzare MyModel in JSon per poi passarlo al server. Ipotizziamo, adesso, di non voler serializzare una delle proprietà di MyModel, ad esempio DataNascita. Per farlo, basta agganciare alla proprietà DataNascita, l’attributo ScriptIgnore:
1
2
3
4
5
6
7
8
9
|
public class MyModel
{
public string Cognome { get; set; }
public string Nome { get; set; }
[ScriptIgnore]
public DateTime DataNascita { get; set; }
} |
Related Posts:
Tags:
asp.net, asp.net mvc, c#, dotnet, mvc
Il sito rai.tv su android: problemi con silverlight
RFOPortal online!
Superenalotto: e se fosse truccato?
Sony: pessima gestione ecommerce