Вставка сложных объектов из 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. Важными моментами являются:

  • Значения параметризованы
  • Операторы выполняются как транзакции (и поэтому все будут откатываться в случае возникновения проблемы
Другие вопросы по тегам