Newsgroup: it.comp.lang.visual-basic
Titolo: Vb.net Domain Model da db...tool?

Ci sto provando a capire tutti i passaggi per costruire una app
davvero modulare multiutente il più "malox free" possibile.
Poi mi scontro con la realtà: dalla teoria alla pratica il passaggio
può essere arduo.
La realtà è quella di una app di test.
Niente ORM per ora.
Però ho bisogno di generare le classi che corrispondono alle tabelle.
Ho da fare il Domain model
Ho vs2010...ma l'entity designer mi accetta solo il provider
SQLserver...quindi quella strada mi è preclusa.
Perchè io ho un db in Access.(ovvio che se vado a modularizzare lo
faccio su una situazione concreta...e la concreta è monoutente
access...multiutente Mysql...o meglio Postgresql...)
Me lo faccio a manina sto "mapping"....ok se le tabelle sono 2.....ma
se sono già 10 la cosa diventa pesante! Se poi sono relazionate ancora
di più...e se sono anche più di 10......
Domanda
Tools free per generare le classi corrispondenti ad un DB (da Access a
postgresql?)
e curiosità:
Possibile che hanno fatto  il tool per entity in VS dotandolo SOLO di
provider per sqlserver? E che debba pagare (per di più a terzi non
microsoft) per avere provider per Entity per db di altre marche? (o
per access)?
Grazie!

 Ho da fare il Domain model
Scusa ma che differenza c'č?
Perchč alla fine mappi comunque una tabella con una classe, certo magari
non riporti le relazioni, ma alla fine cambia poco.
Io c'ho fatto 2 prove, non puoi valutare SQLCompact che mi pare funzioni?

 Io c'ho fatto 2 prove, non puoi valutare SQLCompact che mi pare funzioni?
La differenza è capire da me "a manina" cosa succede senza installare
nessun namespace esterno e solo dopo passare alle automazioni di
Hibernate o Subsonic e conseguenti framework da trascinarsi dietro.
La seconda parte della risposta non l'ho capita!
Ho un db access ...come faccio a generare le classi? Che c'entra SQL
compact? A meno che non sia il nome di un tool...allora scusami sarò
fuso ma su San Google non lo trovo!
Se poi è un casino vabbe...me lo faccio da me per Access....
avevo letto anche di qualcuno che aveva ricompilato il provider di
access ...sembrava che per funzionare sotto entity si dovesse settare
solo una interfaccia!...ma non ritrovo l'articolo...ne sapete nulla???

 Grazie!
.m
-- 
Mauro Servienti
{C67C0157-5D98-4733-A75E-93CAEE4BADC8}
Microsoft MVP - Visual C# / MCTS
http://mvp.support.microsoft.com
blog @ 
http://milestone.topics.it
whynot [ at ] topics [ dot ] it

 postgresql?)
Cioè tu vorresti un tool a cui dai in pasto il db, lui si legge lo 
schema e ti sputa fuori del codice VB con le classi che mappano le tabelle?
ciao
Mauro


Mysql non è free?!?
questa mi è nuova...
EffegiWeb.


E' free software, ma non implica che sia freeware. Non cadere nel
tranello che free software = gratis.
MySQL è gratuito se associato ad un progetto Open Source. Per tutto il
resto si paga una licenza.
Nicola

 fuso ma su San Google non lo trovo!
Credo fosse un soggerimento: invece di usare Access usa SQL Compact Edition.
Io, personalmente, preferisco SQLite.
Non vorrei sbagliarmi, ma questo pacchetto (open source) dovrebbe
contenere anche il class generator di cui parli:
http://sqlite.phxsoftware.com/
Nicola

 tranello che free software = gratis.
No, free software implica sempre gratis, perché per free software si 
intende un software sottoposto a una licenza che rispetta le quattro 
libertà come definite dalla FSF.
E' open source che non implica necessariamente gratis. Essere open 
source è condizione necessaria ma non sufficiente per essere free software.
-- 
news:it-alt.comp.software.openoffice : Il newsgroup dedicato a
OpenOffice.org, la suite open source di applicazioni per ufficio.
Scarica "OpenOffice.org 3: Soluzioni a raccolta", molto più di semplici 
FAQ! 
http://it.openoffice.org/doc/manuali/

 source è condizione necessaria ma non sufficiente per essere free software.
No, non cadere anche tu nell'errore:
http://en.wikipedia.org/wiki/Free_software
Tralaltro:
http://en.wikipedia.org/wiki/Free_software#Examples_of_free_software
Nicola

 No, non cadere anche tu nell'errore
Mi spieghi bene qual è l'errore? Io posso vendere un free software se ci 
riesco, la licenza me lo permetterebbe (libertà di distribuzione). Però 
non posso impedire a nessuno di distribuire lo stesso software 
gratuitamente, in primis sui canali di distribuzione di chi mantiene il 
progetto (tipicamente download da internet).
Me consegue che nella pratica un free software è sempre fruibile 
gratuitamente, anche se qualcuno cerca di approfittarsene.
Ad esempio OpenOffice, che è un free software molto popolare sotto 
licenza LGPL, viene distribuito anche da società che operano su internet 
facendo pagare il download. Lo possono fare, anche se confidano 
sull'ignoranza dell'utente che portebbe procurarsi lo stesso software 
gratuitamene sui canali ufficiali o per mezzo di qualunque altro sistema.


 Mi spieghi bene qual è l'errore? 
*Effegi:*
Mysql non è free?!?
questa mi è nuova...
*Io:*
E' free software, ma non implica che sia freeware.
*Tu (Vitriol):*
No, free software implica sempre gratis [CUT]
*Io:*
http://en.wikipedia.org/wiki/Free_software#Examples_of_free_software
(NOTA: nella lista c'è MySQL come esempio)
Quindi MySQL è Free Software, ma questo non implica che sia gratis. Per
progetti non open source si deve necessariamente optare per la licenza
commerciale.
Nicola

 commerciale.
Il mio era un ragionamento generale. Il caso MySQL lo conosco poco, però 
sono certo che ne esistono due versioni.
Una versione, chiamata "Community Edition", è distribuita sotto licenza 
GPL e quindi è free software. La puoi usare come e dove vuoi.
Un'altra versione, chiamata "Standard Edition", è distribuita con 
licenza proprietaria e contiene funzionalità e strumenti proprietari. 
Questa non è free software.
Nella pratica ci sono state polemiche per il fatto che la Community 
Edition è rimasta indietro e viene pochissimo aggiornata. Mi pare che 
esistano anche dei fork portati avanti da sviluppatori indipendenti che 
si basano sulla Community Edition, ereditandone naturalmente anche la 
licenza.


----
http://en.wikipedia.org/wiki/Mysql#Official
MySQL Workbench is available in two editions, the regular free and open 
source Community Edition which may be downloaded from the MySQL website, 
and the proprietary Standard Edition which extends and improves the 
feature set of the Community Edition.
----
Caso chiuso direi. Il free software è *anche* gratis, ma non solo ;-)


 quindi è free software. La puoi usare come e dove vuoi.
Si, ma devi distribuire anche il codice del software applicativo che lo 
utilizza.
Il problema è che c'è gente che usa MySql free come base dati e poi ci 
collega software di cui non distribuisce il codice.
Alberto

 utilizza.
Ma sei sicuro? Io non credo...
Non mi pare che un server di database si possa considerare alla stregua 
di una libreria linkata da una applicazione per suo uso interno. Poi di 
database non ci capisco, quindi se hai riferimenti precisi indicameli pure.


 Ho da fare il Domain model
Forse è qua che fai un po' di confusione.
Premesso che nemmeno io ho ancora ben chiaro cosa sia il Domain model, 
da quanto ho letto in giro finora ho capito che NON E' la semplice 
collezione delle classi che rappresentano le tabelle del tuo db.
Quindi se tu vuoi farti il modello e pensi di fare una classe per ogni 
tabella presente nel tuo db ... stai sbagliando approccio, ma di questo 
chiediamo conferma ai guru del NG.
ciao
Mauro

 questa mi è nuova...
MySql viene distribuito con due licenze:
- GPL: gratuito ma laicenza è virale e impone che anche il tuoprodotto 
aderisca a GPL;
- una licenza commerciale a pagamento, con tanto di supporto;


 delle classi che rappresentano le tabelle del tuo db.
+1


 aderisca a GPL;
Hai qualche riferimento che espone questa interpretazione della GPL per 
i server di database? Connettersi semplicemente a un database è 
equiparato ad esempio al linkare una libreria ad uso diretto del 
programma con licenza diversa?


 
secondo me la discriminante e' il fatto che il tuo prodotto possa 
funzionare o meno con altri rdbms.
se crei un programma che per funzionare richiede un database, puoi dire 
all'utente che tu suggerisci mysql, ma che se vuole puo' usare anche oracle 
o mssql.
e il tuo ragionamento fila.
se pero' crei un programma che per funzionare richiede mysql e con oracle 
non funziona a meno di pesanti e profonde modifiche, allora probabilmente 
il vincolo e' significativo e la gpl ti lega.
credo, eh, non sono un giurista...
-- 
Paolo opg
BE AWARE that this post uses a fake reply-to address
to contact me write to:
janickg ( at ) hotmail ( dot ) com
--

 ORM. Quindi?
quindi ho tentato di usare quello che avevo....anche Entity...nella
vana speranza che mi accettasse un MDB.
In sintesi...la mia conoscenza del meccanismo in 2 parole:
Ho un metodo generico aggiungi Persona che usa una Classe persona.
Questa classe persona rappresenta una "coso" (nel terrore di sbagliare
termine!!!) che riflette una entità di un DB...nel mio caso è facile:
l'entità è una tabella.
Per quanto mi sforzi ...ritorno sempre lì...da quanche parte dovrò
avere un sistema che mi costruisce le proprietà della classe persona
in base ai campi della tabella persona.
Per ora è tutto statico. Ma ho intuito che posso far interrogare la
struttura del DB (anche in Access) e probabilmente crearmi
dinamicamente la classe.
...però mi sto incasinando e scoraggiando....
vebbe....notte!notte! basta pensare!

 vebbe....notte!notte! basta pensare!
.m


 collezione delle classi che rappresentano le tabelle del tuo db.
Il Domain Model è la parte di "Modello" presente in un Domain Layer, 
ossia una specifica tipologia di "business layer": in pratica, quello 
che ti "ritrovi in mano" se lo progetti seguendo questa metodologia: 
http://en.wikipedia.org/wiki/Domain-driven_design
Il problema di fondo è che ormai si parla di "Domain Model" intendendo 
un generico "Object Model", ed esiste una quantità enorme di 
"letteratura" (leggasi: articoletti vari e post su svariati blog) basata 
su questo equivoco.
Una ulteriore precisazione: "sintetizzare" un domain layer (e quindi: 
bounded context, model, services, repository, ...) è un processo 
estremamente oneroso, e tipicamente giustificato solo quando i requisiti 
sono molteplici e complessi, è possibile instaurare un dialogo 
"permanente" con il business (ubiquitous language), e si prevede che il 
software (o, più in generale, il sistema) sarà 
utilizzato/mantenuto/evoluto per moooolto tempo, in modo da abbassare il 
costo di gestione complessivo (perchè il costo elevato di realizzazione 
sarà "compensato" da quelli ridotti di manutenzione). In assenza di una 
delle suddette condizioni, DDD rischia di essere un fardello 
controproducente.
Per intenderci, non è assolutamente vero che se un software non viene 
realizzato seguendo DDD allora non è professionale/figo/vattelapesca: le 
metodologie sono strumenti, si tratta "solo" di conoscere un numero 
significativo di strumenti in modo da poter utilizzare quello più 
conveniente dato uno specifico contesto
-- 
  .A
GUISA - 
http://www.guisa.org
UGIdotNET - 
http://www.ugidotnet.org
Read my blog at: 
http://blogs.ugidotnet.org/pape

 licenza proprietaria e contiene funzionalità e strumenti proprietari.
La licenza Standard contiene praticamente lo stesso sw della "Community 
Edition", senza però il vincolo della GPL.
BTW, ripeto che sono uno sviluppatore e quindi ciò che scrivo io va 
preso come l'esperienza che un "tecnico" ha acquisito lavorando insieme 
ad avvocati (in un caso, proprio perchè un cliente aveva usato MySQL 
pensando che "fosse gratis" e quando i "legali" hanno esposto il 
problema abbiamo acquistato da Sun la licenza commerciale e l'abbiamo 
installata su un server Linux ad hoc)


 access...e conosco la differenza con MSDE prima SqlServExp adesso!!!)
Scusa Wodka,
forse ho capito male io.
Tu devi usare Access per forza, nel senso che ti viene imposto come
prerequisito?
Altrimenti se il requisito è "un db su un file", va benissimo anche SQL
Compact Edition (che non è la versione Express di SQL Server) o SQLite
(altro dbms su singolo file con una dll da 300 KB!!!).
Nicola


wrote:
....
Grazie a tutti per le risposte!