我有一个GuidId
作为Guid
类型主键的实体。我试图调用一个具有GuidId作为Sql参数的存储过程,但是我收到此错误
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);
}
我认为将Guids传递给SQL有一些问题,这就是为什么我尝试将其作为字符串传递然后转换它的原因。如果在Sql中执行,存储过程可以正常工作,但这里有什么问题?
答案 0 :(得分:0)
如果GuidId PK
属于Guid类型,则传递参数entity.GuidId.ToString()
时出错。您应该将GuidId
声明为字符串,并保持其他内容相同,或者不将参数转换为String。