日期:2014-05-20  浏览次数:21070 次

Linq to sql怎么调用存储过程??
Linq to sql怎么调用存储过程??
下面这个哪里出现了错误?
--存储过程
create PROCEDURE [dbo].getuserinfo
@name varchar(20)
AS
BEGIN  
SELECT id,[name],object,score,[time] FROM userscore WHERE [name] != @name --存在多条记录
END

--linq to sql
[Function(Name="dbo.getuserinfo")]
public ISingleResult<userscore> getuserinfo([Parameter(DbType="VarChar(20)")] string name)
{
IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), name);
return ((ISingleResult<userscore>)(result.ReturnValue));
}

--方法
 /// <summary>
  /// LINQ to SQL存储过程【单一结果集】
  /// </summary>
  /// <param name="name"></param>
  /// <returns></returns>
  public static ISingleResult<Model.userscore> getuserinfo2(string name)
  {
  Model.UserScoreDataContext context = null;
  ISingleResult<Model.userscore> result =null;
  try
  {
  context = new Model.UserScoreDataContext();
  result = context.getuserinfo(name);
   
  }
  catch
  {
  }
  finally
  {
  if (context != null)
  {
  context.Dispose();
  }
  } 
  return result;

  }

--
 [WebMethod]
  public List<int> getuserinfo2(string name)
  {
  List<int> list = new List<int>(0);
  int result = 0;
  ISingleResult<Model.userscore> results=DAL.Class1.getuserinfo2(name);


  foreach (Model.userscore userscore in results)
  {
  result = userscore.id;
  list.Add(result);

  }
  return list;
  }

调试出现错误: 未将对象引用设置到对象的实例


另外哪位能不能给我提供点在.NET调用存储过程的示例,如LINQ to SQL存储过程之多个可能形状的单一结果集,LINQ to SQL存储过程之多个结果集,LINQ to SQL存储过程之带输出参数?
以及linq to sql的教程?

------解决方案--------------------
每次看到把linq to sql 和存储过程搅在一起,
就特别郁闷!!!!
你们到底知不知道linq to sql是什么!!!
都用linq拉,
还要存储过程干什么???
------解决方案--------------------
这种说法有一定道理啊
但是有些复杂的语句用存储过程肯定强
------解决方案--------------------
首先你知道怎么试用Linq 吧?

在项目里添加一个Linq to SQL类,然后在服务器资源管理器里面加载你的数据库,把你的存储过程 拖到 .dbml里,现在你就可以调用你的存储过程了,以我创建的StudentMangerDataContext类为例,方法如下:
C# code

StudentMangerDataContext db = new StudentMangerDataContext();
var Data = from s in db.sp_SelectStudent()  select s;

------解决方案--------------------
5楼回答的很详细了

你把存储过程拖到右边那个框里(默认右边是接受存储过程的)

然后使用时就跟使用方法是一样的