Mapping polimorfico che integra due db differenti: let's summarize! ;-)

rated by 0 users
This post has 0 Replies | 1 Follower

Top 10 Partecipanti
Maschio
Post 268
Punteggio 4.907
petrux Posted: 07-23-2010 11.24

Ciao a tutti,

 

in riferimento al zilione di thread che ho aperto in questi ultimi giorni, vi propongo un caso "real-world" su cui ragionare. Confesso che spero in qualche vostro illuminato (e illuminante) suggerimento, perché vorrei evitare di mettere su qualcosa che sia uno schifo "by design". 

 

La mia situazione è la seguente (in realtà è un esempio :-p): ho un sistema di gestione appuntamenti in cui un utente registrato o anonimo si può prenotare per un appuntamento. All'appuntamento è associata una lista di oggetti (che ho chiamato Target) che sono gli "oggetti" dell'appuntamento (i.e. vari uffici, ecc ecc). 

  • Gli uffici e gli utenti registrati persistono sul db del cliente; sulle tabelle interessate posso avere comunque una vista (o qualcosa di simile);
  • Gli utenti anonimi e gli appuntamenti persistono sul "mio" schema.

Se dovessi descrivere il modello OO con cui "mi piacerebbe lavorare", avrei:

interface IAttendant { ... }

class AnonymousGuest : IAttendant { ... }

class RegisteredUser : IAttendant { ... }

interface ITarget { ... }

class Office : ITarget { ... }

class FooOffice : ITarget { ... }

class BarOffice : ITarget { ... }

//qui siamo allo snodo;

class Appointment {

    IAttendant Attendant { ... }

    ICollection<ITarget> TargetSet { get; private set; }

}

 

I problemi sono:

  1. Come imposto il mapping? 
  2. Come mi è stato consigliato in un altro thread, posso usare un servizio WCF o un data context a parte per utilizzare la persistenza delle classi che risiedono sul db del cliente. *Fisicamente* come si fa? Se mappo su un db, con un ORM, questo mi riempire la property Attendant con l'istanza corretta, come pure la property TargetSer con una lista contenente le istanze corrette. Ma con un Dal a parte/servizio WCF come faccio?
  3. Che problemi posso avere a fare una query di tipo "prendi tutti gli appuntamenti per un dato Target", considerando che gli Id sono di tipo differente?

Ogni altro commento/suggerimento/critica è il benvenuto.

Ciao a tutti e grazie in anticipo,

petrux

-- 

Pagina 1 di 1 (1 elementi) | RSS
Powered by Community Server (Commercial Edition), by Telligent Systems