Comment passer des propriétés entières d'un objet à l'intérieur de params en utilisant dapper.net

.net c# dapper object parameter-passing

Question

Je commence juste à utiliser Dapper pour mes projets et je ne peux pas trouver un moyen de transmettre un objet en tant que paramètre dans Dapper.Net

Existe-t-il un processus quelconque pour passer un objet en tant que paramètre alors Dapper mappera les propriétés de l'objet sur le SQL paramétré?

au lieu d'utiliser ceci:

public class Product
{
    public int ProductID { get; set; }
    public string Name { get; set; }

    public string Description { get; set; }
    public decimal Price { get; set; }
    public string Category { get; set; }
}

static void Main(string[] args)
{
    Product product = new Product()
    {
        Name = "DHS - 3 Star Ball",
        Price = 11,
        Category = "Table Tennis",
        Description = "ITTF - Approved Table Tennis Ball",
        ProductID = 1
    };

    using(IDbConnection dbConnection = ...ConnectionStrings)
    {
        string query = "INSERT INTO Products (Properties here) VALUES (@Properties)";
        dbConnection.Execute(query, ...product.properties here sample: product.ProductID); //<------- Is there any substitute to this?
    }

}

Réponse populaire

Je ne pense pas que vous puissiez faire cela seulement avec Dapper.Contrib. Dapper.Contrib contient des extensions utiles comme

T Get<T>(id);
IEnumerable<T> GetAll<T>();
int Insert<T>(T obj);
int Insert<T>(Enumerable<T> list);
bool Update<T>(T obj);
bool Update<T>(Enumerable<T> list);
bool Delete<T>(T obj);
bool Delete<T>(Enumerable<T> list);
bool DeleteAll<T>();

pour plus d'informations, vous pouvez jeter un oeil ici

Avec l'aide de Dapper.contrib, vous pouvez faire quelque chose comme ça sans même écrire une requête SQL et passer les paramètres

 class Program
    {
        static void Main(string[] args)
        {
            var usr = new User()
            {

                Email = "testmail",
                Name = "testname"
            };

            var connection = System.Configuration.ConfigurationManager.ConnectionStrings["MainDb"].ConnectionString;
            using (IDbConnection dbConnection = new SqlConnection(connection))
            {
            dbConnection.Open();
                long insert = dbConnection.Insert<User>(usr);
            }
        }
    }

    [Table("[User]")]
    public class User
    {
        [Key]
        public int Id { get; set; }
        public string Name { get; set; }
        public string Email { get; set; }

    }


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