mam procedurę, która trwa w parametr wycenione tabela, wraz z innymi:Korzystanie Dapper.TVP TableValueParameter z innymi parametrami
CREATE PROCEDURE [dbo].[Update_Records]
@currentYear INT,
@country INT,
@records Record_Table_Type READONLY
AS
i staram się nazwać z Dapper.TVP.
Oto kod mam tak daleko:
var recordsParameter = new List<SqlDataRecord>();
// This metadata matches 'Record_Table_Type' in the Database
var recordsMetaData = new[]
{
new SqlMetaData("OriginalValue", SqlDbType.Decimal, 19, 4),
new SqlMetaData("NewValue", SqlDbType.Decimal, 19, 4),
new SqlMetaData("NewPercent", SqlDbType.Decimal, 7, 2),
};
foreach (var r in records)
{
var record = new SqlDataRecord(recordsMetaData);
record.SetDecimal(0, r.OriginalValue);
record.SetDecimal(1, r.NewValue);
record.SetDecimal(2, r.NewPercent);
recordsParameter.Add(record);
}
var spParams = new DynamicParameters(new
{
currentYear = filter.currentYear,
country = filter.country,
});
var recordsParam = new TableValueParameter("@records", "Record_Table_Type", recordsParameter);
using (var connection = ConnectionFactory.GetConnection())
{
connection.Execute("Update_Records", ???, commandType: CommandType.StoredProcedure);
}
Mój problem jest jak mam przekazać oba zestawy parametrów do procedury w zaproszeniu do Wytworny Execute()
?
Próbowałem:
var spParams = new DynamicParameters(new
{
currentYear = filter.currentYear,
country = filter.country,
records = new TableValueParameter("@records", "Record_Table_Type", recordsParameter);
});
connection.Execute("Update_Records", spParams, commandType: CommandType.StoredProcedure);
i
connection.Execute("Update_Records", new Object[] { spParams, recordsParam }, commandType: CommandType.StoredProcedure);
Zarówno wywołać procedurę, ale przechodzą pusty parametr tabeli (SELECT COUNT(*) FROM @records
powraca 0)
ja nie mogę znaleźć wszelka aktualna dokumentacja lub źródło dla Dapper.TVP, więc cała sprawa jest bardzo zagmatwana, a drugi parametr do .Execute()
to tylko dynamic
s o to znowu nie mówi mi, co mogę i nie mogę do niego przejść.
Wszelkie pomysły?
Powiązane: http://stackoverflow.com/a/24633764/23354 –