Les types de données texte et nvarchar sont incompatibles dans l'égalité de l'opérateur
c'est mon code
ProductController.cs
public ActionResult Details(string id)
{
product productx = productDB.products.Single(pr => pr.Product1 == id);
return View(productx);
}
De détails.aspx
<td>
<%-- : Html.ActionLink("Edit", "Edit", new { id=item.Id }) % -->
<%: Html.ActionLink("Details", "Details", new { id = item.Product1 })%>
</td>
c'est ce que la messagerie instantanée à l'aide de la liste de certains produits provenant d'une base de données sql, chaque produit a un lien vers une page de Détails pour afficher plus d'informations à ce sujet
ce que Im essayant suffit de mettre l'étiquette du produit dans le lien pour le laisser montrer quelque chose comme www.mysite.com\products\battery (pas l'id)
J'ai imaginé que cela devrait fonctionner, mais il faut jeter un Les types de données texte et nvarchar sont incompatibles dans l'égalité de l'opérateur. d'erreur et
ni (pr => pr.Product1.Equals(id));
œuvres
l'erreur est claire et Im demandant comment dois-je faire pour que cela fonctionne de cette façon ?
grâce
Vous devez vous connecter pour publier un commentaire.
TEXTE colonnes dans SQL Server sont considérées comme de Grandes données de l'Objet et, par conséquent, ne sont pas indexables/recherche. Ils sont également déconseillés. Donc, en fait, le problème est dans votre base de données, pas dans votre application.
Si vous modifiez le type de colonne à un
varchar(max)
, vous pouvez stocker la même quantité de données de caractère, mais ne devrait pas avoir ce problème. Ensuite, mettez à jour votre Linq to SQL entité, et vous n'aurez plus cette erreur.Cela dit... une colonne nommée
ID
ne devrait pas êtreTEXT
ouvarchar(max)
, il devrait être un auto-incrément integer ID ou un GUID (uniqueidentifier
), de sorte que vous pouvez revoir votre conception bd. Mais en supposant que vous avez de bonnes raisons pour les identifications soient les valeurs de chaîne de taille arbitraire, la modification ci-dessus vous permettra de filtre sur la colonne.Product
est très bien. Mais si nous parlons de meilleures pratiques, à vous vraiment devrait envisager d'utiliser un type de données différent de l'ID; vous allez lancer dans majeur des problèmes de performances avec les grands types de caractères.Ce problème peut se produire alors utiliser:
Exemple
Ce qui est incompatible:
Changement pour: