Creare un applicazione utilizzando Linq to Sql - parte prima -

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

Nella stessa categoria

Commenti
dops scrive:
Creare un applicazione utilizzando Linq to Sql - parte prima -

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 ?
29/07/2007 ore 22.39 | 5 risposte
»»»» nostromo scrive:
Re: Creare un applicazione utilizzando Linq to Sql - parte prima -

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
30/07/2007 ore 9.34 | 1 risposta
dops scrive:
Re: Creare un applicazione utilizzando Linq to Sql - parte prima -

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 ?
30/07/2007 ore 10.57 | 1 risposta
»»»» nostromo scrive:
Re: Creare un applicazione utilizzando Linq to Sql - parte prima -

un pò di roba sparsa:

http://www.theserverside.net/tt/articles/showarticle.tss?id=IntroducingEntityFramework

http://blogs.msdn.com/adonet/

ciao marco
30/07/2007 ore 11.32 | 1 risposta
dops scrive:
Re: Creare un applicazione utilizzando Linq to Sql - parte prima -

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 ;)
30/07/2007 ore 13.03 | 1 risposta
sem.tamburella scrive:
21/07/2007 ore 12.34 | 1 risposta
»»»» nostromo scrive:
Re: Creare un applicazione utilizzando Ling to Sql - parte prima -

sem.tamburella ha scritto:
Nell'articolo leggo LinG. Ma è Linq, giusto?



giustissimo, grazie della segnalazione.

ciao marco
23/07/2007 ore 9.34

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.

© 1998-2008 - nostromo - Il blog di Marco Leoncini

TagCloud
BLOG INFO
  • Post: 230
  • Commenti: 95
  • TrackBacks: 23
  • Feed blog e contenuti tecnici: RSS
  • Feed blog: RSS Atom OPML

MVP
CATEGORIE
I PIÙ LETTI DEL MESE
IN EVIDENZA