从C#插入复杂对象到SQL Server而不使用实体框架和数据表
问题描述:
如何从C#插入复杂对象到SQL Server而不使用实体框架和数据表(我想过Dapper.Contrib但它仅适用于实体)。从C#插入复杂对象到SQL Server而不使用实体框架和数据表
现在我正在使用存储过程和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。需要注意的重点是;
- 值为参数
- 的语句执行的交易(因此都将得到一个问题的情况下回滚