Organizzazione classi EF

giovedì 13 dicembre 2012 - 12.06
Tag Elenco Tags  C#  |  .NET 4.0

Gemini Profilo | Expert

Ciao a tutti

vorrei un consiglio su come organizzare le classi quando si utilizza EF.

Ho queste 3 classi: Aziende, Aziende_Photos, Aziende_Impostazioni e come chiave utilizzo codice_aziende.

Queste classi sono state definite con EF 4.x POCO Entity Generator.

Ho definito una classe Azienda che si occuperà di esporre alle altre classi del progetto i metodi e proprietà della classe Aziende.

Vorrei quando inizializzo la classe Azienda(Azienda azienda = new Azienda(codice_azienda)) recuperare tutte le informazioni di una data azienda.

Stavo pensando di creare 3 classi: tipoAzienda, tipoAziendaImpostazioni e tipoAziendaPhotos. Queste 3 classi hanno solo proprietà uguali a quelle definite in Aziende, Aziende_Photos e Aziende_Impostazioni. Quindi avrò:

public Codice_Azienda
{
get{}

set{}
}

...

Più alte proprietà del tipo:

public Big
{
get
{
// restituisci percorso immagine
}

Ora, per recuperare i dati, nella classe Azienda definisco:
tipoAziendaImpostazioni azienda_impostazioni = new tipoAziendaImpostazioni();
List<tipoAziendaPhotos> azienda_photos = new List<tipoAziendaPhotos>();

public Codice_Azienda
{
get{}

set{}
}

public Ragione_Sociale
{
get{}

set{}
}

Definisco il costruttore:
public Azienda(string codice_azienda)
{
tipoAzienda azienda = DataBanker.Azienda(codice_azienda); //Richiama un metodo che recupera i dati dal db con Linq to Entities e restituisce un tipoAzienda
Codice_Azienda = azienda.Codice_Azienda;
Ragione_Sociale = azienda.Ragione_Sociale;
tipoAziendaImpostazioni azienda_impostazioni = DataBanker.AziendaImpostazioni(codice_azienda); //Richiama un metodo che recupera i dati dal db con Linq to Entities e restituisce un tipoAziendaImpostazioni
List<tipoPhotos> azienda_photos = DataBanker.AziendaPhotos(codice_azienda);
}

La classe DataBanker è l'unica che accede al db tramite Linq to Entities. In questo modo se decido di non utilizzare più EF, l'unica classe che devo modificare è questa.

Questa mia organizzazione delle classi non mi convince molto perchè mi sembra di ripetere alcuni dati e alcune operazioni. Per esempio scrivendo: var result = ctx.Azienda.FirstOrDefault(a => a.Codice_Azienda = codice_azienda); recupero in una sola query tutte le informazioni di un'azienda invece di eseguire 3 query. Ma non mi viene in mente nessun altra organizzazione delle classi. Io voglio rendere indipende il mio progetto dal tipo di db e metodo che uso per recuperare i dati.

Questa mia soluzione potrebbe andare bene o ci sono soluzioni più efficienti?

Grazie mille
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5