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;
}
}
}
}
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!
