ASP.NET MVC (MVC2) Procedure ottimali durante l'inserimento / aggiornamento dei dati utilizzando LINQ to SQL e gli strati Repository

StackOverflow https://stackoverflow.com/questions/3105665

Domanda

Sono in un po 'un enigma qui e sto sperando per alcuni di voi Guru per aiutare a riempire gli spazi vuoti.

La situazione attualmente sto di fronte è per quanto riguarda la mia tabella "Utenti" e la mia tabella "OpenID". La mia app permette ad un utente di avere più OpenID di, così ho tenere traccia di loro in una tabella separata.

  

Utenti
  ID
  Nome utente

     

OpenID
  ID
  UserID
  Claimedidentifier

ho un repository CRUD per ogni tabella, e ho anche un servizio che si interfaccia con il Repository (uno per ogni servizio di pronti contro termine).

La domanda che ho è per quanto riguarda l'inserimento di un nuovo utente (dal momento che l'aggiornamento seguirà lo stesso principio). Qui ci sono le opzioni che ho in testa.

  1. Avere l'UserService inserto un nuovo utente, recuperare ID dell'utente e quindi inserire un nuovo OpenID utilizzando l'ID utente
  2. Avere l'UserService inviare il nuovo utente con il ClaimedIdentifier al UserRepository, e hanno il repository inserto sia l'utente e l'OpenID (questo non va bene la metodologia CRUD molto bene)
  3. Crea una vista sia della tabella di utente di un tavolo OpenID, creare un UsersOpenIDRepository e un UsersOpenIDService, e quindi inserire la vista.

Altri pensieri o suggerimenti al di là di quello che mi viene in mente sarà molto apprezzato.

Si prega di notare, non sto usando NHibernate per cui posso modellare il mio dominio però vedo in forma. Mi attengo a LINQ to SQL su questo progetto,

È stato utile?

Soluzione

Nella mia esperienza Linq2SQL non va bene la metodologia CRUD molto bene comunque. Renderlo adeguato mezzi che saltano attraverso cerchi troppe per essere davvero la pena. Il problema si sta descrivendo non è nemmeno quella sola -. Esso diventa ancora peggiore quando si aggiornano le entità

Per questo ho optato per la soluzione 2 (l'inserimento di entrambe le entità nella usersrepostory) nel mio progetto attuale.

Ho anche rinunciato a metodi di aggiornamento per i repository. Unstead mio repository semplicemente hanno un metodo SubmitChanges che deve essere chiamato dopo che tutti gli aggiornamenti vengono eseguiti su soggetti caricati. Tutti gli archivi creati nella stessa richiesta web condividono la stessa DataContext, quindi non importa quale repository SubmitChanges Chiedo. Non è CRUD, ma si presta molto meglio al modo LINQ2SQL di eseguire aggiornamenti del database.

Se davvero vuole assolutamente CRUD puro, si potrebbe voler controllare EF con il modello POCO generazione entità.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top