使用 dapper 插入存储过程(可能是 tvp)

using dapper to insert with stored procedure ( maybe tvp )

我有一个像这样的模型 PersonalInfo:

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

我的地址模型包括如下内容:

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

我需要使用存储过程将这些插入到数据库中,但我需要使用 dapper 来做到这一点。抱歉,我是新手。我尝试了类似下面的方法,但没有成功:

  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);
        };

我可能在这里做错了很多事情,我可以使用 table valuded 参数,但我不知道它如何与 dapper 一起使用。

更新:

所以我想如果我不想在第一个中传递地址,我可以将它排除在第一个发送之外吗?我还是想一次传递整个模型而不是一个道具。

谢谢

问题是 dapper 无法告诉 - 使用存储过程 - 需要什么参数。有数据库 API 可以查询它,但一直这样做的成本非常高。对于常规查询,它可以很好地理解需要什么,但对于存储过程:它们是谜。因此,dapper 只是试图包含它可以看到的所有内容。

最好的选择是 "new" 投影,它可以选择参数所需的属性。