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

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

Nella stessa categoria

Commenti

Per inserire un commento, devi registrarti alla nostra community.

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

TagCloud
BLOG INFO
  • Post: 219
  • Commenti: 87
  • TrackBacks: 17
  • Feed blog e contenuti tecnici: RSS
  • Feed blog: RSS Atom OPML

MVP
CATEGORIE
I PIÙ LETTI DEL MESE
IN EVIDENZA