Creare una vista con Entity Framework e le DefiningQuery

di Stefano Mostarda, in LINQ, Entity Framework,

Una delle cose più potenti di Entity Framework è la possibilità di creare delle viste interne. Questo permette di avere una grande flessibilità perchè si possono effettuare query su una vista senza dover scomodare il database che non sempre può essere modificato.
Una vista si definisce nello storage schema nel seguente modo.

<EntitySet Name="vBestOrder" EntityType="Storage.BestOrder">
  <DefiningQuery>
  SELECT o.OrderId, o.OrderDate, SUM(od.UnitPrice * (Quantity - Discount)) as total
  from [order] o
  join company c on o.CustomerId = c.CompanyId
  join orderdetail od on od.OrderId = o.OrderId
  group by c.Name, o.OrderId, o.OrderDate
  </DefiningQuery>
</EntitySet>

Una volta definita la query, si crea la classe e la si mappa nel conceptual e mapping file. A questo punto, la classe è tranquillamente interrogabile come qualunque altra classe di Entity Framework e il codice generato automaticamente terrà conto della nuova vista.
Purtroppo, le DefiningQuery non sono supportate dal designer di Visual Studio quindi vanno gestite a mano.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi