sql >> Databasteknik >  >> RDS >> Sqlserver

Identitetskolumn i en tabellvärderad parameter i proceduren, hur man definierar DataTable

Jag hade samma problem där vi vill ha en identitet på typen, men inte vill ge ett värde. Nyckeln är att använda en SqlMetaData konstruktor för den kolumn som anger useServerDefault till true :

Enligt denna artikel på med användardefinierad tabelltyp med identifieringskolumn i ado net av 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)


  1. Deadlock-pussel:Offret äger ingen resurs, används för att döda för att lösa dödläget

  2. Vilka är de bästa metoderna för att själv uppdatera PHP+MySQL-applikationer?

  3. Pandas Skrivtabell till MySQL:kan inte återställas

  4. MS SQL jämföra datum?