我有一个存储过程有一堆输入和输出参数,因为它是将值插入多个表.在某些情况下,存储过程仅插入到单个表中(取决于输入参数).这是一个模拟的场景来说明.
表/数据对象:
人
Id
Name
Address
Run Code Online (Sandbox Code Playgroud)
名称
Id
FirstName
LastName
Run Code Online (Sandbox Code Playgroud)
地址
Id
Country
City
Run Code Online (Sandbox Code Playgroud)
假设我有一个插入人的存储过程.如果地址不存在,我将不会将其添加到Address数据库中的表.
因此,当我生成调用存储过程的代码时,我不想打扰添加Address参数.对于INPUT参数,这是可以的,因为SQL Server允许我提供默认值.但是对于OUTPUT参数我在存储过程中做什么使它成为可选的,所以我没有收到错误...
过程或函数'Person_InsertPerson'需要参数'@AddressId',这是未提供的.
我在C#7阅读新出的可变功能在这里.我有两个问题:
它说
我们允许"丢弃"作为输出参数,以a的形式
_,让你忽略你不关心的参数:Run Code Online (Sandbox Code Playgroud)p.GetCoordinates(out var x, out _); // I only care about x
问:我想这只是一个信息而不是C#7的新功能,因为我们也可以在C#7.0之前这样做:
var _;
if (Int.TryParse(str, out _))
...
Run Code Online (Sandbox Code Playgroud)
或者我在这里遗失了什么?
当我在同一博客中提到时,我的代码会出错:
~Person() => names.TryRemove(id, out *);
Run Code Online (Sandbox Code Playgroud)
*不是有效的标识符.Mads Torgersen的疏忽我猜?