Bonjour à toutes et à tous,

Voici un petit mystère que j'essais de résoudre, mais je ne m'y connais pas grand chose :p

Fonctionnement actuel (et standard)

L'objet ObjectDataSource tel que je l'utilise actuellement fonctionne avec en code Behind avec les assignations suivantes :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
odsEnvironment.TypeName = "MonNamespace.Logic.EnvironmentDataSource";
odsEnvironment.DataObjectTypeName = "MonNamespace.Linq.Environment";
 
odsEnvironment.SelectMethod = "SelectEnvironment";        
odsEnvironment.InsertMethod = "InsertEnvironment";
odsEnvironment.UpdateMethod = "UpdateEnvironment";
odsEnvironment.DeleteMethod = "DeleteEnvironment";
Cela me permet de manipuler dans la class "MonNamespace.Logic.EnvironmentDataSource" que je mentionne la UpdateMethod suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
[DataObjectMethod(DataObjectMethodType.Update)]
public void UpdateEnvironment(Environment environment)
{
            Environment updateEnvironment = nadc.Environment.Single(ue => ue.UID == environment.UID);
            updateEnvironment.Code = environment.Code;
            updateEnvironment.Category = environment.Category;
            updateEnvironment.Status = environment.Status;
            updateEnvironment.ValidityEnd = environment.ValidityEnd;
 
            nadc.SubmitChanges();
}
Jusque la tout marche bien, un tableau s'affiche bien et l'Update se fait bien.

Fonctionnement attendu
Mise en évidence du problème qui m'amène ici

Maintenant j'ajoute dynamiquement à mon Select de nouvelles colonnes depuis une méta table, cette ajout étant fonction d'un contexte utilisateur, je ne peux connaitre à l'avance quel "odsEnvironment.DataObjectTypeName" sera manipulé. Quand on tente un update une fois que d'autres colonnes existent, l'exception suivante est levée :

"Impossible de trouver une propriété nommée 'Owner' sur le type spécifié par la propriété DataObjectTypeName dans ObjectDataSource 'odsEnvironment'."
Ceci n'a rien d'extraordinaire puisque mon objet "MonNamespace.Linq.Environment" ne contient pas la colonne Owner que j'ai ajouté dynamiquement dans mon SelectMethod.

Vos idées, tutos, réponses...

L'idéal serait d'arriver à récupérer une sorte de "List<Object>" en paramètre de l'UpdateMethod (à la place d'Environment) pour que je puisse faire un foreach dessus afin d'isolé les colonnes appartenant à l'objet Environment de base et celle étant des attribues (des entrées) de ma metatable (d'une table annexe contenant les colonnes pouvant être ajouté dynamiquement).
Mais cela n'est pas possible de part le fonctionnement de l'ObjectDataSource.

Mais j'avoue que je sèche, et peut être même qu'il faudrait faire autrement.

Vos aides et idées sont les bienvenues

Merci d'avance !