il nuovo VisualStudio è ormai alle porte, seguito fedelmente dal fido Linq e dal prode C# 3.
In questo Post e alcuni seguenti andrò a narrare, come (secondo me) andare a realizzare un DataLayer, BusinessLayer e UI utilizzando Ling To Sql.
saranno Post Sintetici, che rispecchiano, ultimamente, la mia poca propensione di parlare.
tutto il codice che segue è stato scritto utilizzando la Beta 1 di Orcas, appena la Beta 2 sarà disponibile vedremo le differenze.
ma partiamo con qualcosa che sicuramente non varierà, una nuova sezione di configurazione con la quale specificheremo il file XML utilizzato per mappare le colonne del db alle proprietà delle nostre entità, e infine l'immancabile stringa di connessione.
Ling To Sql offre due approcci alla mappatura l'AttributeMappingSource e XmlMappingSource , ambedue ereditano dalla classe astratta MappingSource, il primo mappa la nostra tabella all'entità utilizzando l'attributi, è quindi necessario decorare le nostre classi compreso ogni suo metodo/proprietà, il secondo (e ultimo) utilizza invece un file xml, non è quindi necessario nessun (o quasi) intervento sulle nostre entità.
quindi creiamo un nuovo progetto C# e aggiungiamo una nuova classe che erediti da ConfigurationSection, per realizzare la nuova sezione di configurazione utilizzeremo l'approccio Dichiarativo, molto più rapito per lo sviluppo:
using System;
using System.Configuration;
using TheSimpleBeach.Common;
using System.Web;
namespace TheSimpleBeach.Setting
{
public class SimpleBeachSettings : ConfigurationSection, ISettings
{
private static SimpleBeachSettings _settings;
private static object _sinkLock = new object();
static public ISettings GetCurrent()
{
if (_settings == null)
{
try
{
lock (_sinkLock)
{
if (_settings == null)
{
_settings = ConfigurationManager.GetSection("SimpleBeachSettings") as SimpleBeachSettings;
}
}
}
catch (Exception ex)
{
throw new SimpleBeachSettingException("", ex);
}
}
if (_settings == null)
{
throw new SimpleBeachNullSettingException("");
}
return _settings;
}
[ConfigurationProperty("ConnectionString", IsRequired = true)]
public string ConnectionString
{
get
{
return (string)this["ConnectionString"];
}
set
{
this["ConnectionString"] = value;
}
}
[ConfigurationProperty("MappingSourcePath", IsRequired = true)]
public string MappingSourcePath
{
get
{
HttpContext _context = HttpContext.Current;
if (_context != null)
{
return _context.Server.MapPath((string)this["MappingSourcePath"]);
}
else
{
return (string)this["MappingSourcePath"];
}
}
set
{
this["MappingSourcePath"] = value;
}
}
#region ISettings Members
string ISettings.ConnectionString
{
get { return ConnectionString; }
}
string ISettings.MappingSourcePath
{
get { return MappingSourcePath; }
}
#endregion
}
}
la nuova classe implementa l'iterfaccia ISettings, definita nell'assembly TheSimpleBeach.Common, per adesso il suo utilizzo è limitato.
la firma dell'interfaccia definisce due proprietà, ConnectionString e MappimgSourcePath del tipo stringa.
creiamo inoltre due classi personalizzate per sollevare eccezioni custom
using System;
using System.Collections.Generic;
using System.Text;
namespace TheSimpleBeach.Setting
{
public class SimpleBeachSettingException : Exception
{
public SimpleBeachSettingException(string message, Exception innerException) :base(message,innerException){ }
}
public class SimpleBeachNullSettingException : Exception
{
public SimpleBeachNullSettingException(string message) : base(message) { }
}
}
fine prima parte
non conosco benissimo il progetto nhibernate, ma direi di no.
ci sono alcune limitazioni in Linq To Sql, come il mapping 1 a 1 tra entità e tabella.
per forse dire addio a nhibernate dovremo aspettare l'entity framework
ciao marco
nostromo ha scritto:
non conosco benissimo il progetto nhibernate, ma direi di no.
ci sono alcune limitazioni in Linq To Sql, come il mapping 1 a 1 tra entità e tabella.
per forse dire addio a nhibernate dovremo aspettare l'entity framework
ciao marco
Non riesco a trovare info :(
cos'è l'entity framework ?
un pò di roba sparsa:
http://www.theserverside.net/tt/articles/showarticle.tss?id=IntroducingEntityFramework
http://blogs.msdn.com/adonet/
ciao marco
nostromo ha scritto:
un pò di roba sparsa:
http://www.theserverside.net/tt/articles/showarticle.tss?id=IntroducingEntityFramework
http://blogs.msdn.com/adonet/
ciao marco
tenkiu ;)
Nell'articolo leggo LinG. Ma è Linq, giusto?
sem.tamburella ha scritto:
Nell'articolo leggo LinG. Ma è Linq, giusto?
giustissimo, grazie della segnalazione.
ciao marco
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.






Stampa
Download 
10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!

ah ma quindi i feedback degli architetti sono stati ascoltati.. ora per il mapping viene utilizzato un file di configurazione.. come in nhibernate insomma.. bene.. quindi a questo punto si può dire addio a nhibernate ?
Continua »»» | Rispondi »»»