1

我有一个像这样的模型 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);
        };

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

更新:

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

谢谢

4

1 回答 1

2

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

最好的选择是选择参数所需的属性的“新”投影。

于 2016-01-21T17:46:30.963 回答