Commit c9f4b535 authored by mgravell's avatar mgravell

add test for #1431

parent 4ad80f88
......@@ -3,7 +3,7 @@
<AssemblyName>Dapper.Tests</AssemblyName>
<Description>Dapper Core Test Suite</Description>
<GenerateDocumentationFile>false</GenerateDocumentationFile>
<TargetFrameworks>netcoreapp2.1;net462;net472</TargetFrameworks>
<TargetFrameworks>netcoreapp2.1;net462;net472;netcoreapp3.1</TargetFrameworks>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<DefineConstants>$(DefineConstants);MSSQLCLIENT</DefineConstants>
</PropertyGroup>
......
using System.Collections.Generic;
using System.Data;
using System.Threading.Tasks;
using Xunit;
namespace Dapper.Tests.Issues
{
[Collection("Issues")]
public sealed class SystemSqlClientIssue1431 : Issue1431<SystemSqlClientProvider> { }
#if MSSQLCLIENT
[Collection("Issues")]
public sealed class MicrosoftSqlClientIssue1431 : Issue1431<MicrosoftSqlClientProvider> { }
#endif
public abstract class Issue1431<TProvider> : TestBase<TProvider> where TProvider : DatabaseProvider
{
[Fact]
public async Task CanUseDataTableTVP()
{
InitSchema();
var result = (await GetSomeData(new[] { 1, 2, 3 }));
Assert.Equal("1,2,3", string.Join(",", result));
}
private void InitSchema()
{
try { connection.Execute("drop proc Issue1431_GetDataWithTVP"); } catch { }
try { connection.Execute("drop type Issue1431_IdFilter"); } catch { }
connection.Execute("CREATE TYPE Issue1431_IdFilter AS TABLE (Id int NOT NULL)");
connection.Execute(@"CREATE PROC Issue1431_GetDataWithTVP (@IdFilter Issue1431_IdFilter READONLY)
AS
BEGIN
SET NOCOUNT ON;
SELECT Id
FROM @IdFilter;
END");
}
public async Task<IEnumerable<int>> GetSomeData(IEnumerable<int> idFilter)
{
var dataTable = GetDataTable(idFilter);
var dynamicParams = new DynamicParameters(new { IdFilter = dataTable });
return await connection.QueryAsync<int>("Issue1431_GetDataWithTVP", dynamicParams, commandType: CommandType.StoredProcedure);
}
private static DataTable GetDataTable(IEnumerable<int> idFilter)
{
var dt = new DataTable();
dt.Columns.Add("Id", typeof(int));
if (idFilter == null) return dt;
foreach (var id in idFilter)
{
dt.Rows.Add(id);
}
return dt;
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment