2017-09-26 2 views
1

Comment insérer des objets complexes de C# dans SQL Server sans utiliser Entity Framework et des tables de données (je pensais à Dapper.Contrib mais uniquement aux entités). J'utilise des procédures stockées et Dapper pour l'instant, mais je ne peux insérer qu'un seul objet et aussi - seulement avec des paramètres dynamiques donc ce n'est pas ce que je cherche.Insérer des objets complexes de C# dans SQL Server sans Entity Framework et tables de données

Par exemple:

DynamicParameters p = new DynamicParameters(); 
p.Add("ID", user.UserInformation.ID); 
p.Add("DELEGATORID", user.UserRole.DelegateID ?? string.Empty); 
p.Add("APPROVER", user.UserRole.Approver); 
p.Add("DELEGATOR", user.UserRole.IsDelegator); 
p.Add("SEARCHTEXT", searchText); 

puis insérez. Mais j'ai besoin de faire deux insertions supplémentaires.

Par exemple - je veux obtenir 3 objets complexes à insérer dans la procédure stockée puis exécutez 3 procédure stockée pour chaque objet

Merci.

Répondre

0

Idéalement, vous utiliseriez un ORM qui s'occupe de cela mais une option consiste à utiliser des chaînes SQL brutes en construisant toute la requête sous forme de chaîne (ou en plusieurs chaînes), paramétrez-la et exécutez-la. Un google rapide donne et exemple ici; https://codereview.stackexchange.com/questions/59863/transaction-handling-for-multiple-sql-statements. Les points importants à noter sont;

  • Les valeurs sont paramétrés
  • Les déclarations exécutent comme une transaction (et donc vont se roulé tous de retour en cas d'émission
0

Comment insérer des objets complexes à partir de C# dans SQL Serveur sans utiliser Entity Framework et les tables de données

SQL Server peut analyser XML et les versions plus récentes peuvent également analyser JSON. Ainsi, la manière la plus simple d'insérer des données mises en forme dans SQL Server sans ORM est d'envoyer un document XML ou JSON et de l'analyser sur le serveur.