76 messaggi dal 16 marzo 2011
Salve

ho il seguente problema. Ho un Db modellato mediante EntityFramework, dove ci sono almeno 10 tabelle con identica struttura che nel futuro posso diventare anche di più, quindi nei metodo per effettuare le operazioni base (insert, select, update) non vorrei di continuo rimettere mano come aggiungo una tabella dato che il codice da eseguire è lo stesso, quindi, ad esempio per la select, ho provato con il comando ExecuteStoreQuery:

 

string queryString = @"SELECT * FROM " + DatabaseName + "." + tableName;
 
ObjectResult<object> result = this.context.ExecuteStoreQuery<object>(queryString);                         


Il problema è che la query viene eseguita correttamente, in result vedo gli elementi che effettivamente sono nella tabella, ma non riesco a convertirli nel tipo giusto, ovvero in quello degli oggetti della tabella. Ho provato anche con il reader


var cmd = this.connection.CreateCommand();
cmd.CommandType = System.Data.CommandType.Text;
cmd.CommandText = queryString;

var reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
Type tp = Type.GetType(tableName);


var jobs = context.Translate<tp>(reader, tableName,
MergeOption.AppendOnly).ToList();


Il problema è che dinamicamente non posso fare l'istruzione Translate<tp> perchè il tipo deve essere noto a priori. Qualcuno sà aiutarmi

Grazie in anticipo
76 messaggi dal 16 marzo 2011
Ho risolto così:

var test = this.context.GetType().GetProperty(tableName).GetValue(context, null);

if (whereClausole != null)
result = ((IEnumerable<EntityObject>)test).Where(x => ((ITreeTable)x).NodeId == ((ITreeTable)whereClausole).NodeId);
else
result = ((IEnumerable<EntityObject>)test).Select(grp => grp);

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.