Ich habe eine Entität, die GuidId
als Primärschlüssel des Typs Guid
hat. Ich versuche, eine gespeicherte Prozedur aufzurufen, die die GuidId als SQL-Parameter hat, aber ich bekomme diese FehlermeldungStored Procedure wirft Fehler für Guids in Code zuerst
Incorrect syntax near '@Id'.
CreateStoredProcedure("dbo.MyStoredProc",
param => new
{
Id = param.String()
},
body:
@"DECLARE @GuidId uniqueidentifier = convert(uniqueidentifier, @Id)
...");
repository.ExecuteQuery("EXEC MyStoredProc @Id",
new SqlParameter("@Id", entity.GuidId.ToString()));
public void ExecuteQuery(string query, params object[] parameters)
{
dbContext.Database.ExecuteSqlCommand(query, parameters);
}
Ich denke, dass es etwas falsch mit den vorbei Guids zu SQL ist, das ist, warum ich versuchte es als String zu übergeben und dann zu konvertieren. Die gespeicherte Prozedur funktioniert, wenn sie in Sql ausgeführt wird, aber was ist hier falsch?
Ich hoffe, Ihre Guid als Primärschlüssel ist nicht auch der Clustered-Index. Sie werden 99% Fragmentierung mit weniger als tausend Zeilen überschreiten. Eine andere Spalte ist eine bessere Wahl für den Clustered-Index, oder Sie müssen den Clustered-Index ständig defragmentieren. –