Je suis en train de rechercher l'ID max dans la base de données, puis l'incrémente de 1 pour chaque nouvelle entrée comme indiqué ci-dessous:chaîne SQL ou les données binaires seront tronquées
var query2 = dbb.Database.SqlQuery<patient_visit>("SELECT MAX(CAST(SUBSTRING(pvid, 3, 10) AS int)) FROM patient_visit");
if (query2 != null)
{
objDetails.pvid = query2.ToString();
objDetails.pvid += 1;
objDetails.pvid = "PV" + objDetails.pvid;
}
string sql = "INSERT INTO patient_visit (pvid,paid) " +
"VALUES('" + objDetails.pvid + "', '" + paid + "')";
Mais lorsque je tente d'insérer dans la base de données, il donne erreur
Une exception de type « System.Data.SqlClient.SqlException » eu lieu dans EntityFramework.SqlServer.dll mais n'a pas été traitée dans le code utilisateur
informations complémentaires: String ou binaire un serait tronqué.
J'ai essayé d'exécuter la requête dans SQL Server et vérifié la valeur de « pvid », il est 10 donc après i INCLUDE « PV » au pvid entier, il devrait être 12. Il devrait être bien , mais pourquoi ai-je eu cette erreur? S'il vous plaît quelqu'un peut-il m'aider?
[Key]
[MaxLength(20), MinLength(12)]
public string pvid { get; set; }
Lorsque je remplace le pvid par un ID de code, cela fonctionne très bien. Pourquoi cela arrive-t-il? P/S: Je sais qu'il n'est pas conseillé de simplement concaténer les données d'entrée avec la requête, mais j'ai aussi essayé d'interroger en utilisant une requête paramétrée mais elle donne la même erreur.
string sql = "INSERT INTO patient_visit (pvid,paid) " +
"VALUES(@pvid, @paid)";
List<SqlParameter> parameterList = new List<SqlParameter>();
parameterList.Add(new SqlParameter("@pvid", objDetails.pvid));
parameterList.Add(new SqlParameter("@paid", paid));
SqlParameter[] parameters = parameterList.ToArray();
dbb.Database.ExecuteSqlCommand(sql, parameters);
pouvez-vous s'il vous plaît nous dire pourquoi vous utilisez une chaîne pvid et incrémenter de 1 où vous pouvez utiliser un champ auto-incrémenté? – maSTAShuFu
@maSTArHiAn J'utilise SQL Server 2012 pour ma base de données. Je ne suis pas vraiment familier avec cela, peut-il être fait avec SQL Server 2012? Comment? – Nurul