Creare un Applicazione con 3 tier utilizzando Linq to Sql parte seconda

Marco Leoncini

di Marco Leoncini, in asp.net, venerdì 27 luglio 2007 ore 15.17

Nella prima parte abbiamo visto come creare una semplice sezione di configurazione , oggi creeremo il primo tassello dello strato d'accesso dati.
Come accennato, mapperemo le nostre entità alle relative tabelle/colonne utilizzando un file di configurazione xml, sicuramente più flessibile rispetto a decorare classi e proprietà.

Creiamo una libreria di classi e chiamiamola TheSimpleBeach.Data.

La mappatura tra entità /tabelle è affidata alle classi derivate da MappingSource, noi utilizzeremo l'XmlMappingSource.

Il nostro compito è quindi quello ci caricare il file XML per creare l'oggetto XmlMappingSource.

Aggiungiamo una nuova classe e chiamiamola MappingSourceRepository, compito della classe è anche quello di memorizzare in una collezione gli oggetti XmlMappingSource già creati, per risparmiare l'onere di consumare ogni volta uno stream.

using System; 
using System.Collections.Generic; 
using System.Collections.ObjectModel; 
using System.Linq; 
using System.Data.Linq; 
using System.IO; 
using System.Xml; 
 
namespace TheSimpleBeach.Data 
{ 
public static class MappingSourceRepository 
{ 
private static Dictionary<string, XmlMappingSource> _repository; 
 
static MappingSourceRepository() 
{ 
_repository = new Dictionary<string, XmlMappingSource>(2);  
} 
 
 
static public XmlMappingSource GetXmlMappingSource(string path) 
{ 
if (string.IsNullOrEmpty(path)) 
{ 
throw new ArgumentNullException("path"); 
} 
else 
{ 
XmlMappingSource _mappingSource = null; 
 
_repository.TryGetValue(path, out _mappingSource); 
 
if (_mappingSource == null) 
{ 
try 
{ 
if (File.Exists(path)) 
{ 
using (Stream _stream = File.OpenRead(path)) 
{ 
_mappingSource = XmlMappingSource.FromStream(_stream); 
_repository.Add(path, _mappingSource); 
} 
} 
} 
catch (Exception ex) 
{ 
throw new ApplicationException("impossibile recuperare il file di mapping", ex); 
} 
 
} 
 
return _mappingSource; 
} 
} 
} 
} 
Commenti

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.



Segnala su: Facebook MSDN Social Twitter Segnalo Wikio Diggita Technorati Stumbleupon Google Yahoo FriendFeed Delicious Furl

Nella stessa categoria
I più letti del mese
TagCloud
BLOG INFO
  • 242 post, 108 commenti, 23 trackback
  • Feed blog e contenuti tecnici: RSS
  • Feed blog: RSS Atom
IN EVIDENZA