c# - 在没有 Entity Framework 和数据表的情况下将 C# 中的复杂对象插入到 SQL Server 中

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

然后插入。但是我需要再插入 2 个。

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

谢谢。

最佳答案

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

  • 值是参数化的
  • 语句作为事务执行(因此在出现问题时全部回滚

关于c# - 在没有 Entity Framework 和数据表的情况下将 C# 中的复杂对象插入到 SQL Server 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46429042/

相关文章:

sql - 更新语句失败,因为我有一个名为 order 的列

java - jTDS + 存储过程 + prepareSQL = 嵌套级错误?

java - MariaDB:启用 Java 存储过程

mysql - MySQL 5 数据库上的错误 1064

c# - iPhone 中使用 .NET 生成的公钥进行 RSA 加密?

c# - 如何在内容页面中添加面板?

c# - 整数显示为 0x00000000

c# - NHibernate 的二级缓存和模式更改的错误

sql-server - SSDT 项目发布事务部署

C# SQL Server - 将列表传递给存储过程