Linq to sql怎么调用存储过程??

百思软件工作室 2010-04-14 03:19:29
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的教程?
...全文
704 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
丰云 2010-04-15
  • 打赏
  • 举报
回复
每次看到把linq to sql 和存储过程搅在一起,
就特别郁闷!!!!
你们到底知不知道linq to sql是什么!!!
都用linq拉,
还要存储过程干什么???
  • 打赏
  • 举报
回复
5楼回答的很详细了

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

然后使用时就跟使用方法是一样的
lester19872007 2010-04-15
  • 打赏
  • 举报
回复
首先你知道怎么试用Linq 吧?

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

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


sp_SelectStudent() 是存储过程名,另外你会看见你的StudentMangerDataContext.designer.cs
文件里给你创建了如下的函数!
[Function(Name="dbo.sp_SelectStudent")]
public ISingleResult<sp_SelectStudent_个结果> sp_SelectStudent()
{
IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())));
return ((ISingleResult<sp_SelectStudent_个结果>)(result.ReturnValue));
}
}

public partial class sp_SelectStudent_个结果
{

private int _stu_id;

private System.Nullable<int> _ClassesId;

private string _stu_name;

private System.Nullable<int> _sex;

private System.Nullable<int> _age;

public sp_SelectStudent_个结果()
{
}

[Column(Storage="_stu_id", DbType="Int NOT NULL")]
public int stu_id
{
get
{
return this._stu_id;
}
set
{
if ((this._stu_id != value))
{
this._stu_id = value;
}
}
}

[Column(Storage="_ClassesId", DbType="Int")]
public System.Nullable<int> ClassesId
{
get
{
return this._ClassesId;
}
set
{
if ((this._ClassesId != value))
{
this._ClassesId = value;
}
}
}

[Column(Storage="_stu_name", DbType="NVarChar(20)")]
public string stu_name
{
get
{
return this._stu_name;
}
set
{
if ((this._stu_name != value))
{
this._stu_name = value;
}
}
}

[Column(Storage="_sex", DbType="Int")]
public System.Nullable<int> sex
{
get
{
return this._sex;
}
set
{
if ((this._sex != value))
{
this._sex = value;
}
}
}

[Column(Storage="_age", DbType="Int")]
public System.Nullable<int> age
{
get
{
return this._age;
}
set
{
if ((this._age != value))
{
this._age = value;
}
}
}
sclsuccess2010 2010-04-15
  • 打赏
  • 举报
回复
这种说法有一定道理啊
但是有些复杂的语句用存储过程肯定强

8,493

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧