- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要将项目集合传递给存储过程。存储过程将它们插入到多个表中。我使用声明的自定义用户类型的表值参数。
TVP 类型:
CREATE TYPE [dbo].[Type1] AS TABLE
(
[Id] [int] IDENTITY(1,1) NOT NULL,
[Field1] [nvarchar](256) NOT NULL,
[Field2] [int] NOT NULL,
PRIMARY KEY NONCLUSTERED ([Id] ASC)
WITH (IGNORE_DUP_KEY = OFF)
)
这是我使用的代码:
var dataTable = new List<SqlDataRecord>();
SqlMetaData[] metaData =
{
new SqlMetaData("Field1", SqlDbType.NVarChar, 256),
new SqlMetaData("Field2", SqlDbType.Int),
};
foreach (var item in items)
{
var record = new SqlDataRecord(metaData);
record.SetValue(0, item.Field1);
record.SetValue(1, item.Field2);
dataTable.Add(record);
}
var parameters = new DynamicParameters(new
{
Items = dataTable.AsTableValuedParameter()
});
await conn.QueryAsync(
sql: "DoSomeJob_Sproc",
param: parameters,
commandType: CommandType.StoredProcedure);
这里的问题是 TVP 类型具有标识符列,在此处插入新项目时不能(实际上也不需要)传递该列。但是如果我没有在记录元数据中指定它,我会得到一个错误
Trying to pass a table-valued parameter with 2 column(s) where the corresponding user-defined table type requires 3 column(s).
问题是:有没有办法显式指定我需要的字段(但不使用片段中所示的序号)?
最佳答案
看来我找到了答案 - 至少是如何在这里忽略身份列:
SqlMetaData[] metaData =
{
new SqlMetaData("IdentityColumn", SqlDbType.Int, true, false, SortOrder.Unspecified, -1),
new SqlMetaData("Field1", SqlDbType.NVarChar, 256),
new SqlMetaData("Field2", SqlDbType.Int),
};
foreach (var item in items)
{
var record = new SqlDataRecord(metaData);
record.SetValue(1, item.Field1); //starting from 1; 0 is for ident col
record.SetValue(2, item.Field2);
dataTable.Add(record);
}
希望这可以帮助其他人。
关于c# - 小巧玲珑/SQL 服务器 : passing TVP to stored procedure with needed fields only,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63476306/
下面使用Dapper抛出Incorrect syntax near ','。 const string sql = "select * from ZipToZipDistance z wher
我应该如何将 IDbConnection 和 IDbTransaction 与 Dapper 一起使用? 目前我只使用 IDbConnection 。如下: using (SqlConnection
这似乎是一种奇怪的行为,但以下代码会引发错误: public async Task RebuildIndex(string tableName, string indexName) { awa
在 MVC 3 项目中,我使用 EF4、IoC 和 Agatha-RRSL 作为我的服务层。 幸运的是,这周我找到了 Dapper,我将从 EF4 迁移到 Dapper! 通常我会在我的 Agatha
我今天设法启动并运行了一些小型沙箱/POC 项目,但似乎在一个问题上让我头疼...... 问题: Is there a way to get dapper to map to SQL column n
我的读者从存储过程中读取内容它的第一个选择语句之一是 select id , name from FSubsystem 从 10 个中选择 staments 然后我声明了如下字典Dictionary
我正在使用 dapper.net 并且我已经为我的 Delete 和 Update 语句包装了 connection.Execute。 public virtual void Update(TEnti
我的数据库是甲骨文。我使用 Dapper 1.13,它抛出一个异常说 Error parsing column 3 (LATITUDE=39.2330 - Decimal)。 LATITUDE 是我实
我正在使用 Dapper.NET,当我执行下一段代码时: using (SqlConnection con = new SqlConnection(connectionString))
我正在尝试使用结构作为 Dapper 中的参数查询。它对我不起作用。但好像it should work . 一个失败的例子: struct Simple { public int ID; } [Tes
我在 C# 中使用 Dapper,后端是 MS Access。我的 DAL 方法在数据库中插入记录。我想返回插入行的唯一标识符(或更新的具有唯一标识符的 POCO)。我期待我的功能如下(我知道这不起作
我看到了使用 Dapper 执行带有动态参数的存储过程并返回过程结果的示例。通常,示例使用 .Execute,但其中一些使用 .Query。我在使用 .Execute 时遇到困难。在上述情况下我应该使
实际上我有一个查询,它返回的结果包含 varchar 类型的列(对于 ex.Address),但是该表的域模型包含对象类型的属性(对于 ex.Address 地址)。因为它会出现错误,它说无法将字符串
我使用 Dapper 的 DynamicParamters 对象和模板参数来生成我的实体的参数。在调用我的存储过程后,出现以下错误“过程或函数 sp_MemberSave 指定的参数太多。”。我的一些
我有一个包含地址对象的公司。 SQL 返回是平坦的,我正在尝试让 Query<> 加载所有对象。 cnn.Query("Sproc", (org,mail,ph
我需要将项目集合传递给存储过程。存储过程将它们插入到多个表中。我使用声明的自定义用户类型的表值参数。 TVP 类型: CREATE TYPE [dbo].[Type1] AS TABLE (
我是一名优秀的程序员,十分优秀!