Domanda

Una semplice query LINQ to SQL potrebbe restituire un oggetto prodotto. Obiously ho potuto passare questo oggetto al mio livello di business, quindi leggere e aggiornare i dati, direttamente contro l'oggetto.

Ho visto un sacco di implementazioni in cui a seguito dell'esecuzione del LINQ query oggetto risultante viene mappato (tramite automapper o manualmente) per un oggetto business personalizzato. Quindi, nel caso di prodotto in cui potrei avere l'oggetto LINQ:

product.ProductId e Product.ProductName

e poi vorrei definire un oggetto business personalizzato prodotto in questo modo:

class BusineszProduct
{
    string ProductId;
    string ProductName;
}

e qualche semplice codice di mappatura come:

BusinessProduct myProduct = new BusinessProduct (); myProduct.ProductId = product.ProductId; myProduct.ProductName = product.ProductName;

e poi passare myProduct intorno al mio livello di business, modificarlo, leggerlo e così via, poi aggiornare l'oggetto LINQ.

In quali scenari dovrei voler creare la classe BusinessProduct personalizzato?

È stato utile?

Soluzione

secondo me, la ragione generale è quello di disaccoppiare / disentangle tuoi entità d'affari di bagaglio Linq2SQL ORM che viene fornito con Enti Linq2SQL

Tuttavia, in uno scenario estremo, è possibile avere più mappature:

  • entità Linq2SQL per lo strato di "Data Access" - tuttavia questi sono strettamente accoppiati al L2S DataContext
  • pocos / Enti commerciali sarebbero stati utilizzati per l'applicazione delle regole di business, validazione etc
  • Se si utilizza Web Services o WCF, si potrebbe anche rappresentare i dati come entità Messaggio per esempio se avete bisogno di presentare i soggetti in un formato molto specifico quando vengono serializzati attraverso il filo
  • E infine, se si dispone di un'architettura MVC / MVP / MVVM UI, si potrebbe desiderare entità su misura per le vostre opinioni

Altri suggerimenti

Nella mia domanda, faccio una query LINQ che unisce sei diverse tabelle, e fornisce un paio di colonne da ciascuno di essi. Non v'è alcun tipo di oggetto da tavolo specifico che corrisponde a quello set di informazioni. Quindi crea un business class personalizzato per gestire il set di record.

È possibile visualizzare da soli (a http://www.njtheater.org )

I selezionare dalla tabella Productions per data. Si unisce al tavolo da gioco (dove ottengo il titolo e descrizione), la tabella Troupes (dove ottengo il nome della società di teatro), la tabella Venues (dove prendo il nome di Teatro & City). La tabella Plays si unisce al tavolo PlayCredits che unisce la tabella People (dove ho i nomi dei drammaturghi)

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