Buonasera a tutti,
allora mi presento: mi chiamo Fabio e sono uno studente universitario.
Mi piace molto programmare, ma sono molto legato alla programmazione strutturata, anche se ho sempre usato vb e anche vb.net, java e altri linguaggi.
Sto lavorando con un mio compagno a un progetto, ed abbiamo scelto di sviluppare su framework .net con linguaggio vb.
Vi presento subito le domande per le quali necessito di chiarimenti:

-dobbiamo lavorare su un database (abbiamo scelto sqlserver express);
potete suggerirmi un corretto modo per interagire tra classi e database?
ad esempio usare qualche pattern potrebbe tornarmi utile?
(se potete anche allegare documentazione,url etc etc)

-come posso implementare l'MVC in vb.net?

la cosa più importante è la interazione con i database, perchè veramente mi sta facendo diventare pazzo. Anzi, si può dire che una prima versione del programma è fatta, ma non credo sia la migliore, e c'è molto codice ripetuto.

Per ora ho organizzato tutto così:
Model:
ho creato una classe per ogni tabella nel database, con attributi e property pari a ogni campo delle tabelle.
Ho fatto una classe DataBase che si collega al database, effettua la query che voglio e restituisce datatable (allego a fondo pagina questa classe per farvi capire le cxxxxte che ho fatto)

Control:
classi che mi connettono model e view

View:
Varie Form, disegnate con Visual Studio

questa è +o- una rozza forma di mvc ma credo che si devono rispettare regole e strutture migliori.

un altra cosa. La struttura di questo progetto è:

Server Sql <----> Programma per desktop
^------>Programma per Palmari

cioè abbiamo sviluppato 2 programmi uno che girerà sul desktop e uno che girerà su alcuni palmari.
E' normale che le query da parte dei palmari risultino lente?
Secondo voi è giusto fare questa cosa: eseguo una query dal database, mi restituisce un datatable, scorro il datatable e per ogni datatable mi creo un pulsante (dinamicamente) e lo aggiungo al form;
Quando mando in esecuzione sui palmari, la cosa è bruttina da vedere perchè si disegnano al volo sullo schermo (anche perchè a ogni focus ripete il ridisegnamento). Suggeritemi qualcosa vi prego!

inoltre Documentazione e suggerimenti sono utilissimi e ben accetti!!

codice:
Imports System
Imports System.Data
Imports System.Data.SqlClient

Namespace Abstraction
Public Class DataManager
Private connString As String '= "Data Source=127.0.0.1\SQLEXPRESS,1433;Initial Catalog=RestaurantManager;Persist Security Info=false;Integrated Security=false;User ID=sa; password=spiro;"

Private settings As Setting

Private objConn As SqlConnection
Private objCommand As SqlCommand
Private objDataAdapter As SqlDataAdapter
Private objDataSet As DataSet
Private objDataTable As DataTable

Public Sub New(ByVal query As String, ByVal table As String, ByVal setting As Setting)

Me.settings = setting
Me.connString = "Data Source=" & Me.settings.Host & ";Initial Catalog=" & Me.settings.Database & ";Persist Security Info=false;Integrated Security=false;User ID=" & Me.settings.Username & ";password=" & Me.settings.Password & ";"

Me.objConn = New SqlConnection(Me.connString)
Using Me.objConn
Try
Me.objConn.Open()
Me.objCommand = New SqlCommand(query, Me.objConn)

Me.objDataAdapter = New SqlDataAdapter
Me.objDataAdapter.SelectCommand = Me.objCommand

Me.objDataSet = New DataSet
Me.objDataSet.Clear()
Me.objDataAdapter.Fill(Me.objDataSet, table)
Me.objDataTable = Me.objDataSet.Tables(table)
Catch ex As System.Data.SqlClient.SqlException
Throw New Exception("Errore nella connessione con il database. Controllare le impostazioni")
End Try
End Using
End Sub

Public Function getTable() As Data.DataTable
Return objDataTable
End Function
End Class
End Namespace