Вставка сложных объектов из C# в SQL Server без Entity Framework и таблиц данных
Как вставить сложные объекты из C# в SQL Server без использования Entity Framework и таблиц данных (я думал о 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 хранимых процедуры для каждого объекта
Благодарю.
2 ответа
Как вставить сложные объекты из C# в SQL Server без использования Entity Framework и таблиц данных
SQL Server может анализировать XML, а более новые версии также могут анализировать JSON. Таким образом, самый простой способ вставить фасонные данные в SQL Server без ORM - это отправить документ XML или JSON и проанализировать его на сервере.
В идеале вы должны использовать ORM, который позаботится об этом, но один вариант - использовать необработанные строки SQL, в которых вы строите весь запрос в виде строки (или в нескольких строках), параметризуете его и выполняете. Быстрый Google дает и пример здесь; https://codereview.stackexchange.com/questions/59863/transaction-handling-for-multiple-sql-statements. Важными моментами являются:
- Значения параметризованы
- Операторы выполняются как транзакции (и поэтому все будут откатываться в случае возникновения проблемы