Ciao,
in un altro forum mi hanno consigliato di utlizzare gli oggetti dictionary.
Quindi in sostanza dovrei avere una sorta di matrioska di dictionary,dove la bambolina più piccola è DatoDb e quella più grande,Pannello, che le contiene tutte. Questo a parole è molto bello,il problema è passare ai fatti...
Allora ho cominciato a fare 4 file cs che ho messo sotto un progetto classi che ho chiamato BLL (Business Logic Layer) e sostanzialmente ho riportato lo stesso concetto per 4 volte.Per esempio,riporto il codice da me scritto per la classe pannello:
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Data.Common;
using System.Data.SqlClient;
using DAL;
namespace BLL
{
public class Pannello2
{
//Ipotizzando codicefiscale una stringa
Dictionary<string, DettaglioPannello2> _elencoDettaglioPannello2 = new Dictionary<string, DettaglioPannello2>();
protected DatabaseUtility objDatabaseUtility = new DatabaseUtility();
string mCF ;
int mnTA = new int();
public string codiceFiscale
{
get { return mCF; }
set { mCF = value; }
}
public int numTotAziende
{
get { return mnTA; }
set { mnTA = value; }
}
public Dictionary<string, DettaglioPannello2> elencoDettaglioPannello2
{
get { return _elencoDettaglioPannello2; }
}
public static DataTable getelencoDettaglioPannello(string codicefiscale)
{
// get a configured DbCommand object
GenericDataAccess gda = new GenericDataAccess();
DbCommand comm = gda.CreateCommand();
comm.CommandType = CommandType.Text;
// set the stored procedure name
comm.CommandText = "SELECT * FROM Tcampi";
// create a new parameter
DbParameter param = comm.CreateParameter();
param.ParameterName = "@codicefiscale";
param.Value = codicefiscale;
param.DbType = DbType.String;
comm.Parameters.Add(param);
// return the result table
DataTable table = gda.ExecuteSelectCommand(comm);
return table;
}
public Dictionary<string, DettaglioPannello2> GetDictionaryPannello2(String codicefiscale)
{
SqlConnection cnn = objDatabaseUtility.OpenConnection();
try
{
Dictionary<string, DettaglioPannello2> resultsList = new Dictionary<string, DettaglioPannello2>();
SqlParameter[] paramsElemento = new SqlParameter[1];
paramsElemento[0] = new SqlParameter("@codicefiscale", codicefiscale);
string sql_statement = "SELECT * FROM Tcampi";
Dictionary<string, object> resultsListobj = objDatabaseUtility.SelectCommandDictonary(cnn, sql_statement, CommandType.Text, paramsElemento);
return resultsList;
}
catch (Exception e) { throw e; }
finally { objDatabaseUtility.CloseConnection(cnn); }
}
}
}
Come potete notare tra le proprietà della classe pannello c'è la seguente,che dovrebbe essere quella che espone il dizionario dei dettaglipannello2
public Dictionary<string, DettaglioPannello2> elencoDettaglioPannello2
{
get { return _elencoDettaglioPannello2; }
}
Potrete notare dallo
e dal metodo
che mi sono creato un altro progetto di classi con le quali sto cercando di realizzare il Data Access Layer.Tale metodo nella mia mente dovrebbe riempire il dizionario esposto dal pannello... solo che sono un attimo confuso sul chi dovrà restituirmi il dato finale e come fare in modo che la classe atta al popolamento dei dizionari mi possa popolare ogni volta un dictionary del tipo da me dichiarato e cioè per esempio nel caso di pannello2 a chiave stringa corrisponde un oggetto della classe dettagliopannello2.
Spero di essere stato chiaro e mi auguro che qualcuno mi possa dare una mano,perchè non ho molto tempo a disposizione e ho su certi aspetti le idee parecchie confuse.
Grazie infinite anticipatamente per l'aiuto.