L'Entity Framework e le custom class coinvolte nei where...

Andrea Zani

di Andrea Zani, in .NET, domenica 31 agosto 2008 ore 03.04

Riprendo il solito esempio di entity:

entity in visual studio 2008

Ipotizzando di voler recuperare tutti gli Articles con un determinato colore si potrebbe essere spinti a scrivere:

var c=Context.Colors.Where(cc=>cc.Id==1).First();
var coll=from ar in Context.Articles.Include("Colors")
where ar.Colors=c
select ar;

Semplicemente, avendo una entity voglio vedere tutte le entity che hanno come property questo oggetto. Eseguita, però, si ottienere questo errore:

Unable to create a constant value of type 'Closure type'. Only primitive types (for instance Int32, String and Guid) are supported in this context.

Questo perché l'EF non permette il confronto tra oggetti complessi. La soluzione è banale, anzi, in qualche caso più semplice (nel caso di web control che ritornano un valore numerico per identificare una scelta di un utente, per sempio da un dropdownlist):

int c=int.Parse(ddl_colors.SelectedValue); // <- prendo il colore selezionato
var coll=from ar in Context.Articles.Include("Colors")
where ar.Colors.Id=c
select ar;

Oppure:

var c=Context.Colors.Where(cc=>cc.Id==1).First();
var coll=from ar in Context.Articles.Include("Colors")
where ar.Colors.Id=c.Id
select ar;

Soluzione semplice, ma è sempre bene saperla.

Commenti

Per inserire un commento, devi avere un account.

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



Segnala su: Facebook MSDN Social Twitter Segnalo Wikio Diggita Technorati Stumbleupon Google Yahoo FriendFeed Delicious Furl

Nella stessa categoria
I più letti del mese
TagCloud
BLOG INFO
  • 295 post, 201 commenti, 36 trackback
  • Feed blog e contenuti tecnici: RSS
  • Feed blog: RSS Atom
IN EVIDENZA