2017-08-28 2 views
0

J'utilise SQL Server et Dapper et je veux stocker correctement mon objet models dans la base de données et les récupérer.Objet de liste de cartes utilisant SQL Server et Dapper

C'est mon modèle, la liste guid est la liste des autres ID 'Generator' du modèle.

public class GeneratorSet 
{ 
    public Guid Id { get; set; } 
    public string Name { get; set; } 
    public string Description { get; set; } 
    public List<Guid> GeneratorsList { get; set; } 
} 

Mon but est de cartographier correctement cet objet à une table SQL Server et puis en utilisant Dapper correctement récupérer mes objets de base de données. La relation est de plusieurs à plusieurs (l'ensemble peut «posséder» beaucoup de générateurs, et le générateur peut être possédé par plusieurs ensembles).

+0

Avez-vous essayé quelque chose? Quel est votre problème? – Milney

+0

J'ai essayé de placer la rangée de table comme varchar et de stocker la liste dans la chaîne avec chaque guid séparé par la virgule. Et puis faire une cartographie lourde en utilisant dapper. Mais ce n'est pas beau et professionnel. Je vise un moyen d'utiliser la carte dapper de base comme 'var generatorSet = connection.QueryFirst (" SELECT * FROM GénérateurSet WHERE Id = @ID; ", nouveau {ID = Id});' – Erexo

Répondre

2

Vous pouvez le faire en utilisant le paramètre SplitOn ... Voici un guide;

https://taylorhutchison.github.io/2016/03/23/dapper-orm-complex-queries.html

Ou tout simplement en ayant des noms uniques et la cartographie à l'aide d'un lambda - en utilisant l'exemple de la documentation (https://github.com/StackExchange/Dapper);

var sql = 
@"select * from #Posts p 
left join #Users u on u.Id = p.OwnerId 
Order by p.Id"; 

var data = connection.Query<Post, User, Post>(sql, (post, user) => { post.Owner = user; return post;}); 
var post = data.First(); 

Assert.Equal("Sams Post1", post.Content); 
Assert.Equal(1, post.Id); 
Assert.Equal("Sam", post.Owner.Name); 
Assert.Equal(99, post.Owner.Id); 

Je ne peux pas écrire le code réel/requête que je ne connais pas votre schéma de base de données ... mais nous espérons que vous l'idée?

+1

Oui, je J'ai réussi à faire ce que je veux en raison de vos instructions. Merci! – Erexo