Tuve el mismo problema en el que queremos una identidad en el tipo, pero no queremos proporcionar un valor. La clave es usar un SqlMetaData
constructor para esa columna que establece useServerDefault
a true
:
Según este artículo sobre utilizando el tipo de tabla definido por el usuario con la columna de identificación en ado net por Tim Van Wassenhove
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)