18 messaggi dal 04 giugno 2007
Buongiorno,
sto introducendo l'utilizzo di dynamicdata in un progetto già esistente.

Domanda:
Mentre il DynamicData mi permette di aggiungere facilmente delle Proprietà utilizzando la partial class,
es.
public partial class CreditCard
{
[UIHint("Text")]
public object MyCardType
{
get { return this._CardType; }
}
}

ho notato che DynamicDataEntities si comporta in modo diverso, ossia sfruttando lo stesso principio ma su un EntityDataModel, la nuova proprietà non viene presa in considerazione.

Devo per forza agire a livello di CSDL ? oppure serve una implementazione ulteriore ?

Grazie.

Stefano
StefanoFar wrote:
Devo per forza agire a livello di CSDL ? oppure serve una implementazione ulteriore ?

per indicare all'engine come trattare i metadati è sufficiente creare una partial class che abbia l'attributo MetadataType, in questo modo:
[MetadataType(typeof(Customers_Metadata))]
public partial class Customers
{
[DisplayName("Clienti")]
public class Customers_Metadata
{
[UIHint("Text")]
public object MyCardType{get;set;}
}
}
}

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
18 messaggi dal 04 giugno 2007
In effetti sono stato un pò troppo conciso...

intendevo dire che la mia esigenza è quella di definire una nuova proprietà, non definita a livello concettuale (nel file edmx), che non ha bisogno di essere mappata, in quanto torna magari semplicemente la somma di due valori scalari già mappati.
Questa proprietà deve poi essere bindata dal DynamicDataEntities.
Riporto un piccolo estratto del codice...

il field _flagBlackList è già mappato, la proprietà nuova è IsViaggioAbilitato
ma non viene presa in considerazione quando viene bindata l'entità T_Navi

[ScaffoldTable(true), DisplayName("Nave")]
[MetadataType(typeof(NaveMetaData))]
public partial class T_Navi
{
[ScaffoldColumn(true)]
public object IsViaggioAbilitato
{
get { return !this._flagBlackList; }
}
}

public class NaveMetaData
{
.....
.....

}

Stefano
StefanoFar wrote:
ma non viene presa in considerazione quando viene bindata l'entità T_Navi

perchè la definizione della proprietà va fatta anche nella classe che specifica il MetadataType. ed è lì che va messo l'attributo ScaffoldColumn su true, per indicare che si vuole visualizzare.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
Daniele Bochicchio [MVP] [Staff] wrote:
perchè la definizione della proprietà va fatta anche nella classe che specifica il MetadataType. ed è lì che va messo l'attributo ScaffoldColumn su true, per indicare che si vuole visualizzare.

mi era sfuggito che stessimo parlando di EF. niente, con EF (ed è un bug noto in EntityDataSource) non c'è verso di far funzionare questa cosa. è un bug noto che sarà risolto con ASP.NET 4.0. con LINQ to SQL, invece, funziona. teoricamente usando LinqDataSource in lettura, se ti è possibile (ad esempio con un template custom solo per la visualizzazione solo di quella entity) riesci a risolvere. Dynamic Data, purtroppo, sono ancora alla loro primissima versione, con la prossima le cose migliorano decisamente.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
18 messaggi dal 04 giugno 2007
behhh... devo aspettare solo un anno....

Grazie molte....

Stefano

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.