Domanda

Sono finalmente andare in giro per il check-out l'ultima versione EF e sto in esecuzione in alcuni problemi con il mio test.

Quindi, il mio strato DAL detiene il mio file .edmx e sto utilizzando il modello MS POCO così ho anche i file generati .TT e classi.

Ho una classe di base generico nel TestProject.DAL ho creato che quelle classi derivano da. Cioè

public class BaseEntity<T> {}
public class Customer : BaseEntity<Customer> {}
public class Product : BaseEntity<Product> {}

Poi, nel mio livello TestProject.BLL ho alcune classi derivate Cioè.

public class TestProject.BLL.Customer : TestProject.DAL.Customer {}
public class TestProject.BLL.Product : TestProject.DAL.Product {}

Poi, nel mio livello UI Chiamo il mio oggetto BLL.Customer. Ottengo un errore che dice che il riferimento all'oggetto DAL.Customer non viene aggiunto, ecc.

Ho un riferimento al progetto BLL dal mio progetto UI e un riferimento al DAL dal mio progetto BLL.

Perché il livello di interfaccia utente lamentava che sa dello strato DAL quando non è fatto riferimento in quel progetto?

Inoltre, come una domanda lato, lo fa apparire come un design "buono"?

Grazie a tutti! Goosey

È stato utile?

Soluzione

Craig è corretta - l'interfaccia utente fa riferimento ai tipi di entità POCO. Ma io elaborare un po 'di più.

Se si trovavano in una situazione in cui il progetto dell'interfaccia utente è stato riferimento al BLL montaggio e che il montaggio è stato riferimento al DAL assemblaggio e non al pubblico esponendo tutti i membri da che DAL assemblaggio , quindi quello che stai dicendo sarebbe corretto. Ma questo non è ciò che sta accadendo qui. Si fa riferimento alla BLL montaggio e i tipi in quell'assemblea direttamente eredita dai tipi DAL e quindi i tipi DAL sono pubblicamente visibili per l'interfaccia utente. Pertanto, il compilatore è (correttamente) che ti dice che è necessario fare riferimento al DAL assemblea dal progetto UI.

Per quanto riguarda la tua domanda "buon design", che dipende sempre dal contesto. Senza conoscere qualsiasi vostro contesto, io esiterei a creare un albero di ereditarietà come questo. Qual è il lavoro dei tuoi sottoclassi nel BLL montaggio?

Altri suggerimenti

Il tuo UI non fare riferimento ai tipi di entità POCO -. Tramite il parametro di tipo generico su BaseEntity

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