Jeg havde det samme problem, hvor vi vil have en identitet på typen, men ikke vil give en værdi. Nøglen er at bruge en SqlMetaData
konstruktør for den kolonne, der indstiller useServerDefault
til true
:
Ifølge denne artikel på brugerdefineret tabeltype med identifikationskolonne i ado net af Tim Van Wassenhove
SQL :
CREATE TYPE [Star].[example] AS TABLE(
[Ordinal] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](200) NOT NULL,
)
C# :
var sqlMetaData = new[]
{
new SqlMetaData("Ordinal", SqlDbType.Int, true, false, SortOrder.Unspecified, -1),
new SqlMetaData("Name", SqlDbType.NVarChar, 200)
};
sqlRecords = new HashSet<SqlDataRecord>(usersToInclude.Select(user =>
{
var record = new SqlDataRecord(sqlMetaData);
record.SetString(1, user.Name);
return record;
}));
new SqlMetaData("IdentityField", SqlDbType.Int, true, false, SortOrder.Unspecified, -1)