Attualmente sto sviluppando un progetto secondario per la scuola e dovrei usare un'architettura a tre livelli nel progetto.
Sto lavorando con C # in .NET e sto lavorando anche su Windows Forms e con l'aiuto di Entity Framework ho creato un database (Model First) connesso al progetto in una soluzione separata. Dopo che il database è stato generato correttamente ho creato una classe di contesto del database che ottiene e imposta valori sulle entità nel mio database attraverso le classi create dal modello, in questo modo:
// User class generated by model
public partial class User
public int Id { get; set; }
public string Name { get; set; }
// Database context class that communicates with the generated class
public class DatabaseContext : DbContext
public DbSet<User> Users { get; set; }
Per cercare nel database mentre si fa qualcosa (ad esempio corrispondendo a un determinato nome utente) diciamo che ho messo qualcosa di simile all'interno di uno dei miei moduli su un gestore di eventi:
using (var db = new DatabaseSolution.DatabaseContext())
{
var userlist = db.Users.ToList();
foreach(var user in userlist)
{
if (textboxName.Text.Equals(user.Name)
{
do stuff
}
}
}
La mia domanda è questa: è un'architettura a tre strati come ho scritto sopra o devo avere una classe aggiuntiva che interagisca sia con la classe di contesto del database che con i moduli?