Je souhaite avoir une classe qui définit mes données de paramètre pour une procédure stockée. Ça va être un objet très simple:nHibernate - Propriétés Iterate d'une classe pour ajouter des paramètres génériques pour la procédure stockée
public class MyQueryData : SprocObjectBase
{
public int Value1 { get; set; }
public string Value2 { get; set; }
public bool Value3 { get; set; }
...
}
Il héritera d'une classe de base avec des valeurs partagées, comme le nom.
public abstract class SprocObjectBase
{
public string SprocName { get; set; }
}
Types simples pour une conversion facile. Mais, il y aura plus d'un de ces objets, et chacun sera différent.
Ensuite, je veux être en mesure de parcourir les propriétés de l'objet et ajouter les valeurs de paramètre à ma requête, en supposant que les noms de propriété sont mes noms de paramètres sproc. Donc, mon code ressemble à ceci:
public void Execute<T>(T entity) where T : SprocObjectBase
{
IQuery query = Session.GetNamedQuery(entity.SprocName);
var properties = typeof(T).GetProperties();
foreach (var prop in properties)
{
//??????????????
}
query.ExecuteUpdate();
}
Ma question est, comment puis-je utiliser query.SetParameter<>()
avec les informations de propriété dans ma boucle foreach pour ajouter génériquement chaque propriété en tant que paramètre à la procédure stockée?
EDIT: Mon usage courant, qui ne compile pas, ressemble à ceci:
query.SetParameter<prop.GetType()>(prop.Name, prop.GetValue(entity, null));
chéri, je n'ai pas vu cet usage. Erreur de l'utilisateur Merci Stefan. – Josh