Sono abbastanza nuovo per l'MVP e il mondo di Entity Framework, quindi portami con me.EF ObjectContext, Service and Repository - Gestione della durata del contesto.
Attualmente ho una combinazione View + Presenter, la vista ha due eventi Modifica ed Elimina e il presentatore ascolta solo questi eventi. Ho anche un servizio oggetto e repository impostati. Lo strato servizio richiede alcune implementazioni repository che tengono un ObjectContext quindi l'ordine di costruzione è (passa nell'oggetto superiore a quello sottostante:
ObjectContext
|
V
Repositries
|
V
Service Object
|
V
Presenter
Ora il problema è che quando creo contesto dell'oggetto in alto, È vivo per tutto il tempo in cui il presentatore è vivo e significa che Modifica ed Elimina utilizzano la stessa istanza di contesto dal servizio
Quindi chiamare ServiceObject.Delete e ServiceObject.Edit utilizzano lo stesso contesto che rende difficile gestire il rilevamento delle modifiche. Da quello che ho capito il contesto dovrebbe essere solo di breve durata e solo per una unità di lavoro, per me Modifica ed Elimina sono entrambi diversi lotti di lavoro
Come si esegue la DI con il framework entità e si gestisce ancora la durata del contesto?
Ho visto persone appena rinnovate nel contesto dell'oggetto nel repository, è un buon esempio.
o dovrei farlo nell'oggetto di servizio, qualcosa di simile:
ServiceObject{
public void Edit(// some args) {
Using(var context = new MyObjectContext) {
var repo = new MyRepo(context);
var entity = repo.GetForID(12);
// Do some stuff for edit
context.SaveChanges();
}
}
}
Ma se lo faccio come che non sono più passando il mio repository nel costruttore di ServiceObject e non facendo DI :(.
Cosa posso fare in questa situazione?
qualcuno sa qualsiasi progetto open source che posso guardare che può aiutare me con questo problema.
Grazie.
uuh questo è un bene! – Roubachof