Violation de la key primaire lorsque les valeurs ne sont pas les mêmes

J'ai datatables suivantes dans ma database:

entrez la description de l'image ici

Notez où se trouve le slider, donc le champ a quelques espaces après le mot. Et puis j'appelle le code suivant pour insert une nouvelle valeur:

var tagList = new List<ProductTag> { new ProductTag { Name = "diepvries" } }; var sbCopy = new SqlBulkCopy(_dataContext.Database.Connection.ConnectionSsortingng) { BulkCopyTimeout = 60 * 10 }; sbCopy.WriteToServer(tagList.AsDataReader()); 

Cependant, l'exception suivante est levée

Violation de la contrainte PRIMARY KEY 'PK_dbo.ProductTags'. Impossible d'insert une key dupliquée dans l'object 'dbo.ProductTags'. La valeur de la key en double est (diepvries).

J'ai également testé avec le text "diepvries2" et cela a fonctionné. Qu'est-ce que je fais mal?

Selon cette page ,

SQL Server suit la spécification ANSI / ISO SQL-92 (section 8.2, <Predicate de comparaison>, règles générales n ° 3) sur la manière de comparer des strings avec des espaces.La norme ANSI nécessite un remplissage pour les strings de caractères utilisées dans les comparaisons. correspondre avant de les comparer. "

Quel genre de DB? Je sais que dans le server SQL, les strings sont "rembourrées" avec des espaces blancs à la même longueur avant la comparaison. En tant que tel, vos deux strings sont identiques en ce qui concerne la database SQL. Les détails sont ici .