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
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
- Modificare il controllo TreeView, il 2 dicembre 2008 alle 19:27
- Perfezioniamo il ProfileDataSorce, il 13 ottobre 2008 alle 11:14
- Un DataSource per il Profile, il 10 ottobre 2008 alle 15:06
- TrueSpace 7 gratuito, il 24 luglio 2008 alle 10:59
- adesso dico la mia sull'Iphone, il 22 luglio 2008 alle 10:33
- Come tutto ebbe inizio, il 21 luglio 2008 alle 09:22