C# 在代码隐藏中使用sqldatasource返回范围标识

C# 在代码隐藏中使用sqldatasource返回范围标识,c#,asp.net,C#,Asp.net,目前,我正在以以下方式使用sqldatasource从codebehind插入db SqlDataSource13.InsertParameters["name"].DefaultValue = ufn; SqlDataSource13.InsertParameters["mime_type"].DefaultValue = FileUpload1.PostedFile.ContentType; SqlDataSource13.InsertPara

目前,我正在以以下方式使用sqldatasource从codebehind插入db

SqlDataSource13.InsertParameters["name"].DefaultValue = ufn;
            SqlDataSource13.InsertParameters["mime_type"].DefaultValue = FileUpload1.PostedFile.ContentType;
            SqlDataSource13.InsertParameters["size"].DefaultValue = FileUpload1.PostedFile.ContentLength.ToString();
            SqlDataSource13.InsertParameters["extension"].DefaultValue = "";
            SqlDataSource13.InsertParameters["date"].DefaultValue = dt.ToShortDateString();
            SqlDataSource13.InsertParameters["type"].DefaultValue = ddlDocType.SelectedValue;
            SqlDataSource13.InsertParameters["description"].DefaultValue = tbDescription.Text;
            SqlDataSource13.Insert();
这很好用。但是,我现在需要获取insert id。我在insert查询的末尾添加了selectscope\u标识。以及插入参数的参数,方向为ouput

SELECT @id = SCOPE_IDENTITY()
<asp:Parameter Name="id" Direction="Output" />
选择@id=SCOPE\u IDENTITY()
但是,我需要弄清楚如何使用上面的设置获取输出参数。

尝试以下操作:

protected void SqlDataSource13_Inserted(object sender, SqlDataSourceStatusEventArgs e)
{
    string sID = e.Command.Parameters["@Identity"].Value.ToString();
}

摘自(不是C#而是想法在那里)

为了让事情变得更简单,我切换到linq到sql查询

tableDataContext tdc = new tableDataContext();
doc d = new doc();
d.dpi = qs;
d.dn = ufn;
etc...
tdc.docs.InsertOnSubmit(d);
tdc.SubmitChanges();

// get current row insert id
int dID = d.id;
所以现在我有了最近插入的文档id来使用。 简单


多亏了写这篇文章的人,我才知道那篇文章。然而,我想把它与我在上面所做的结合起来使用。最后,我改为linq查询。