541 messaggi dal 09 febbraio 2004
altro vedo tre progetti

LongRunningTransactions
LayeredWebApplication.Business
LayeredWebApplication

quali sarebbero le differenze ?
Ciao,

per il database se guardi bene c'è uno script incluso nello zip tramite cui puoi creare le due tabelle che lo compongono.

LongRunningTransactions contiene gli esempi presentati nell'articolo.
LayeredWebApplication.Business e LayeredWebApplication, come suggeriscono i nomi, rappresentano invece l'ultima parte, in cui si mostra come integrare quella unit of work in un contesto layered.

m.
541 messaggi dal 09 febbraio 2004
grazie ora controllo!
17 messaggi dal 08 giugno 2010
mi sto scontrando con una problematica che sicuramente molti di voi hanno già risolto. sto facendo un progettino di prova con MVC 2 e entity framework. ho configurato il tutto per utilizzare la unitOfWork. non capisco bene però come effettuare la modifica dell'oggetto. mi spiego. ho una view, un controller e la classe di business. chiamo la action Modifica(id) che istanzia il mio oggetto
public ActionResult Modifica(int id)
{
//iniziamo una nuova transazione di business
unitOfWorkId = UnitOfWorkContainer.Instance.BeginTransaction<Context>();
//metto in sessione l'identificativo della UnitOfWork
Session["UnitOfWork"] = unitOfWorkId;

objDiscente = new Discente(id, UnitOfWorkContainer.Instance.GetUnitOfWork<Context>(unitOfWorkId));

return View("~/Views/ArchivioDiscente/viewArchivioDiscenteModifica.aspx",objDiscente);
}

il costruttore dell'oggetto è il seguente:
public Discente(int pID, UnitOfWork<Context> unitOfWork)
{
this.unitOfWork = unitOfWork;


Discente res =
(from c in this.UnitOfWork.PersistenceContext.Discente where c.IDDiscente == pID
select c).First();

this.midDiscente = pID;
this.mcognome = res.Cognome;
this.mnome = res.Nome;
this.mMatricola = res.Matricola;
}

ho poi la action che viene invocata sul Submit "conferma"
[HttpPost]
public ActionResult Modifica(Discente objDiscente)
{

// nella form di modifica ci deve essere il campo id (hidden)
unitOfWorkId = (Guid)Session["UnitOfWork"];


UnitOfWorkContainer.Instance.CommitTransaction(unitOfWorkId);
return main("");

}

la modifica non va a buon fine, chiaramente il mio oggetto Discente non è legato al contesto ma come dovrei fare? non devo mica caricarmi nuovamente l'oggetto e modificarne gli attributi?
spero di aver dato tutte le informazioni per farmi aiutare... grazie
Ciao,

scusami ma mi sfugge il punto in cui aggiorni la entity con i dati provenienti dalla view.

m.
17 messaggi dal 08 giugno 2010
premetto che sto usando le la feature per le Classi POCO. vorrei che l'oggetto Discente che passo alla action Modifica sia quello che poi passo al context. devo fare l'attach?
Eh sì, quantomento dovresti farne l'attach, altrimenti il context non ne sa nulla

Anyway, procedere in questo senso ha un po' di sfighe:
1) nel caso di proprietà complesse, il model binder di ASP.NET MVC fa un po' fatica a ricostruire una entity esattamente com'era
2) Non è detto che in pagina tu abbia tutti i campi, che quindi saranno valorizzati a null nella entity; ergo... EF poi te li spiana sul database. Meglio usare (Try)UpdateModel sulla entity già nel context. Molto molto meglio, un custom model binder che faccia in modo che la entity che trovi come argomento sia *proprio* quella di Entity Framework.

(Pubblicità: quest'ultimo scenario è trattato nel nostro ASP.NET 4.0 in Practice, e guarda caso questo mese ne regaliamo *CINQUE* copie!!  )

Ciao!
17 messaggi dal 08 giugno 2010
1) nel caso di proprietà complesse, il model binder di ASP.NET MVC fa un po' fatica a ricostruire una entity esattamente com'era
si, l'ho notato ... stavo anche cercando di capire se sono io che sbaglio approccio oppure se è il model binder ... mi hai risposto.
2) ...Meglio usare (Try)UpdateModel sulla entity già nel context....
intendi : mi riprendo l'entity dal context, nel faccio l'UpdateModel
e faccio l'attach?

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.