使用LINQ使用Entity Framework执行存储过程

时间:2015-08-03 19:41:20

标签: sql-server linq entity-framework stored-procedures

我正在

  

'ABC.Security.GetUserLocation'附近的语法不正确。

使用以下代码执行存储过程时。

.点是Name的一部分(用于分组),不要将它与Schema混淆。

像“FirstName.LastName”之类的东西。我可以毫无问题地从SSMS执行它。

var userNameToSearch = new SqlParameter("@userName", userName);
userNameToSearch.DbType = System.Data.DbType.String;
userNameToSearch.Size = 100;

List<Location> locations = db.Database.SqlQuery<Location>(@"[ABC.Security.GetUserLocation]", userNameToSearch).ToList();

return locations;

使用C#代码中的名称的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

您可以按如下方式在DbContext类中调用存储过程。

this.Database.SqlQuery<YourEntityType>("storedProcedureName",params);

这里有更多信息:https://msdn.microsoft.com/en-us/data/jj691402.aspx

这是这个问题的答案:here

答案 1 :(得分:1)

尝试明确参数

List<Location> locations = db.Database.SqlQuery<Location>(@"exec [ABC.Security.GetUserLocation] {0}", userNameToSearch).ToList();

&#34; {0}&#34;意味着您将 userNameToSearch 作为第一个参数传递,并不重要参数的名称。