将C#中的复杂对象插入到没有实体框架和数据表的SQL Server中

时间:2017-09-26 14:22:14

标签: c# sql-server stored-procedures dapper dapper-contrib

如何在不使用Entity Framework和数据表的情况下将C#中的复杂对象插入SQL Server(我考虑过Dapper.Contrib但它只适用于实体)。

我现在使用存储过程和Dapper,但我只能插入一个对象,而且 - 只能使用动态参数,所以它不是我想要的。

例如:

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

然后插入。但是我需要再做两次插入。

例如 - 我希望在存储过程中插入3个复杂对象,然后为每个对象执行3个存储过程

感谢。

2 个答案:

答案 0 :(得分:0)

理想情况下,您使用ORM来处理这个问题但是一个选项是使用原始SQL字符串,因为您将整个查询构建为字符串(或多个字符串),对其进行参数化并执行它。一个快速的谷歌给出了这里的例子; https://codereview.stackexchange.com/questions/59863/transaction-handling-for-multiple-sql-statements。重点是:

  • 值已参数化
  • 语句作为事务执行(因此,如果发生问题,所有语句都会回滚

答案 1 :(得分:0)

  
    

如何在不使用Entity Framework和数据表的情况下将C#中的复杂对象插入SQL Server

  

SQL Server可以解析XML,而较新的版本也可以解析JSON。因此,在没有ORM的情况下将形状数据插入SQL Server的最简单方法是发送XML或JSON文档并在服务器上解析它。