- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在代码隐藏中,您可以将 TVP 添加为存储过程的 SqlDbType.Structured但这在 ASP.NET SqlDataSource 控件中不存在。
我已将数据表存储在 session 变量中(不用担心它们很小!),我需要将它们作为参数传递给 SqlDataSource(它有许多数据绑定(bind)对象)
我将数据源指向 session 变量,但转换为表类型时失败。
编辑:假设我将 Session 变量从方程中取出(因为,实际上,它完全是相切的)
必须有一种方法可以将 DBType.Structured 附加到 SQLDataSource。我的 ListView 适本地进行了数据绑定(bind),但它们所附加的存储过程必须采用 TVP
我不敢相信没有办法为 SQLDataSource 发送 TVP 参数?我有什么选择?
编辑2:我一直在考虑为 SqlDataSource 创建自定义参数,但在我看来,它的“eval”方法对结构化数据类型不满意
编辑3:开始看来,我唯一的选择是在代码隐藏中为我的数据绑定(bind)控件完成所有工作。我添加了赏金,以防其他人有一个优雅的解决方案。
编辑4:也许有一种方法可以将表作为对象传递给存储过程,然后让 SQL Server 将其转换为 TVP?
最佳答案
我知道您已经编辑说 session 并不重要,但是我能够使用 SessionParameter 来实现此目的。我有一种感觉,它也可以与 ControlParameter 一起使用。
因此您有一个用户定义的表类型:
CREATE TYPE TVPType AS TABLE(
Col1 int,
Col2 int)
GO
以及使用它的存储过程:
CREATE PROC TVPProc(@TVP AS TVPType READONLY) AS
SELECT * FROM @TVP
然后将 GridView 绑定(bind)到从存储过程中选择的 SqlDataSource,并传递 SessionParameter:
<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1" />
<asp:SqlDataSource ID="SqlDataSource1" SelectCommand="TVPProc" runat="server" SelectCommandType="StoredProcedure" ConnectionString="Server=(local)\sqlexpress;Database=Graph;Integrated Security=True">
<SelectParameters>
<asp:SessionParameter SessionField="MyDataTable" Name="TVP" />
</SelectParameters>
</asp:SqlDataSource>
最后是一些将 DataTable 放入 session 中的东西,尽管你说你已经在那里了:
(VB)
<script runat="server">
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Dim MyDataTable As New System.Data.DataTable
MyDataTable.Columns.AddRange({
New System.Data.DataColumn("Col1", GetType(integer)),
New System.Data.DataColumn("Col2", GetType(integer))})
MyDataTable.Rows.Add(22, 33)
MyDataTable.Rows.Add(44, 55)
MyDataTable.Rows.Add(66, 77)
Session("MyDataTable") = MyDataTable
End Sub
</script>
(C#)
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
System.Data.DataTable MyDataTable = new System.Data.DataTable();
MyDataTable.Columns.AddRange(
new System.Data.DataColumn[] {
new System.Data.DataColumn("Col1", typeof (int)),
new System.Data.DataColumn("Col2", typeof (int))});
MyDataTable.Rows.Add(22, 33);
MyDataTable.Rows.Add(44, 55);
MyDataTable.Rows.Add(66, 77);
Session["MyDataTable"] = MyDataTable;
}
</script>
这会产生精细绑定(bind)的 GridView:
以及从 Profiler 生成的以下查询:
declare @p1 dbo.TVPType
insert into @p1 values(22,33)
insert into @p1 values(44,55)
insert into @p1 values(66,77)
exec TVPProc @TVP=@p1
这是 .NET 4、MSSQL Express 2010,但也应该在较低版本下工作。
关于asp.net - 如何设置 ASP.NET SQL 数据源以接受 TVP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3233372/
下面是插入我的数据的函数。 using (SqlCommand insSwipeDataCommand = connection.CreateCommand())
我已经创建了一个 TVP,我试图在存储过程中使用它来输入到存储过程中。 问题是我无法用它创建我的 SP。它说 Msg 137, Level 16, State 1, Procedure uspGetU
我有一个使用以下类型作为参数的存储过程 CREATE TYPE [dbo].[columnOrderTableType] AS TABLE ([id]
我需要从 .NET 4.5 应用调用存储过程。作为 ORM,我使用 Dapper。 存储过程接受 TVP 参数,仅当具有 car_id 的汽车不存在时,才将汽车从列表插入到表 Cars。 表格: CR
我有一个接受表值参数以及其他参数的过程: CREATE PROCEDURE [dbo].[Update_Records] @currentYear INT, @country INT,
我的数据库中有一个存储过程,它采用表值参数,即包含单个整数 Id 列的 IdTable 对象列表。 我有一个用于数据库的实体模型,并希望执行以下操作... ProjectEntities projec
C# devloper 玩 python,我在使用 SQLAlchemy 将行插入 SQL 数据库时遇到问题。 更新代码是这样的。 def updateDatabase(self, testSumma
我想截断 TVP 而不是 DROPPING。 当我编写 TRUNCATE TYPE 时,它给出了错误。 DROP TYPE 正在工作,但我想要 TRUNCATE 谁能帮我解决语法问题吗? 谢谢 最佳答
我正在使用 SQL Server 2008 R2,并且创建了一个 TVP,我想将其用作存储过程的参数,但我收到一条消息,指出找不到它或我没有权限. 我可以在脚本或存储过程的主体中使用 TVP,但是当我
我想截断 TVP 而不是 DROPPING。 当我编写 TRUNCATE TYPE 时,它给出了错误。 DROP TYPE 正在工作,但我想要 TRUNCATE 谁能帮我解决语法问题吗? 谢谢 最佳答
SQL Server 具有表值参数,允许您将值数组作为参数传递。 实现类似于 PostgreSQL 查询的合适方法是什么,这样我就可以做类似的事情: 从 id 为 ($1) 的产品中选择 * 我正在使
在代码隐藏中,您可以将 TVP 添加为存储过程的 SqlDbType.Structured但这在 ASP.NET SqlDataSource 控件中不存在。 我已将数据表存储在 session 变量中
我需要将项目集合传递给存储过程。存储过程将它们插入到多个表中。我使用声明的自定义用户类型的表值参数。 TVP 类型: CREATE TYPE [dbo].[Type1] AS TABLE (
我正在使用 TVP,并且试图将数据表作为 TVP 传递给存储过程。当命令尝试 ExecuteNonQuery 时,它会引发错误: 操作数类型冲突:datetime2 与 int 不兼容。表值参数“@t
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 9 年前。 Improve
我正在尝试将 TVP 与 tedious 一起使用,但在使用 DateTime 参数时不断出现此错误。 构建请求时的异常是: days = Math.floor((parameter.value.g
我是一名优秀的程序员,十分优秀!