utiliser dapper pour insérer avec la procédure stockée (peut-être tvp)

dapper dapper-extensions dapper-fastcrud dapper-fluentmap dapper-rainbow

Question

J'ai un modèle PersonalInfo comme ça:

public string FirstName { get; set;}
public string LastName { get; set;}
public string Email { get; set; }
public IEnumerable<Addresses> Addresses{ get; set; }

Et mon modèle d'Adresses inclut quelque chose comme:

public int AddressId { get; set; }
public string StreedAddress { get; set; }
public string State { get; set; }

J'ai besoin d'utiliser la procédure stockée pour les insérer dans la base de données, mais je dois utiliser dapper pour le faire .. Désolé, je suis nouveau .. J'ai essayé quelque chose comme ci-dessous et cela n'a pas fonctionné:

  var Id =  connection.Execute("usp_Insert", personalInfo, commandType: CommandType.StoredProcedure);
    foreach (Addresses address in personalInfo.Addresses){
        connection.Execute("Insert", new {address, Id}, null, commandType: CommandType.StoredProcedure);
        };

Je fais peut-être beaucoup de choses mal ici, je pourrais utiliser un paramètre de table mais je ne sais pas comment cela fonctionne avec dapper.

METTRE À JOUR:

Donc, je suppose que si je ne veux pas passer les adresses dans le premier, puis-je exclure cela de l'envoi en premier? Je veux toujours passer le modèle entier pas un accessoire à la fois.

Merci

Réponse acceptée

Le problème est que Dapper ne peut pas dire - avec les procédures stockées - quels paramètres sont nécessaires. Il existe des API de base de données pour interroger cela, mais il est extrêmement coûteux de le faire tout le temps. Pour les requêtes régulières, il peut assez bien comprendre ce qui est nécessaire, mais pour les procédures stockées: ce sont des mystères. Par conséquent, Dapper essaie juste d'inclure tout ce qu'il peut voir.

Votre meilleur pari est une "nouvelle" projection qui sélectionne les propriétés dont vous avez besoin pour vos paramètres.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi