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

傻鸟询问.
初学LINQ,脑子发晕。有没人给个例子指导下,找了个案例,一堆各种异常。
比如数据库叫LinqTest,有一张表UserInfo,三个字段,UserId,UserName,Address(id,名字,地址),页面上很简单2个文本框用来接收姓名和地址,一个BUTTON点击保存,下面用一个ASPxGridView绑定显示。主要能展示下增删改查的功能到底咋实现的,查我会了,增删改该怎么弄。跪求一段代码看

------解决方案--------------------
首先,服务器资源管理器第三个图标添加服务器(SQL2005或SQL2000在本机的实例),如果已连接此步略
其次,新建APP_CODE右键新建LINQ to SQL类(如DataClasses.dbml),从服务器资源管理器中把相关的表拖入可视化LINQ to SQL类,关闭--保存,则自动生成.dbml中的代码
========.CS
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
using Microsoft.Win32;
using System.Runtime.InteropServices;
//
using System.Data.Linq;
public partial class _Default : System.Web.UI.Page 
{
//method m = new method();
DataClassesDataContext n = new DataClassesDataContext(
@"server=MICROSOF-3B3AB7\SQL2005;uid=sa;pwd=chuangyu;database=test2");
protected void Page_Load(object sender, EventArgs e)
{

//GridView1.DataSource = m.SelectAll();
//GridView1.DataBind();
}

// 查询
protected void Button1_Click(object sender, EventArgs e)
{
// DataClassesDataContext(可以自定义命名) 是 DataContext 派生类, 用于连接数据库与实体 
//DataClassesDataContext n = new DataClassesDataContext(
// @"server=MICROSOF-3B3AB7\SQL2005;uid=sa;pwd=chuangyu;database=test2");


var s = from n1 in n.a//一个实例类可以有若干个表,本例中有a和b,这里要指定需操作的表
// where n1.OrderID % 10 == 0
select new
{
编号 = n1.aid,//生成实体类时字段名不能与表名相同,若表名为a,字段名也为a,则VS2008会
//将字段命名为a1,当然也可以自命名,不同表的字段名可以相同
名称 = n1.aname
};

//foreach (var s1 in s)
//{
// Response.Write(s1.ID);
// Response.Write("   ");
// Response.Write(s1.Name);
// Response.Write("<br>");
//}
GridView1.DataSource =s;
GridView1.DataBind();

}
//插入数据: 表中必须设置主键,否则不能插入,修改,删除
//如果建实体类时表没有主键,那么在数据库中为表添加主键后实体类中不会自动更新,必须手动更改,或者双击.dbml文件,在可视化界面中将
//该表删除,从服务器资源管理器中重新拖入----所以最好的方法是建表时为每个表设置主健,切记!
//若要执行 SQL Insert,只需向您已创建的对象模型添加对象,然后对 DataContext 调用 SubmitChanges 即可。 
protected void Button2_Click(object sender, EventArgs e)
{

// 建立对a表的LINQ查询 
var s = from n1 in n.a
select n1;

// 向a插入数据 
a r = new a();
r.aid = "666";
r.aname = "name6";
n.a.InsertOnSubmit(r); // 添加记录到 
n.SubmitChanges(); // 通知数据库更改记录 

GridView1.DataSource = s;
GridView1.DataBind();
}
//修改
protected void Button3_Click(object sender, EventArgs e)
{
// 建立对a表的LINQ查询 
var s = from n1 in n.a where n1.aid=="aaa" select n1;//注意:WHERE条件中为双等号,与SQL语句有别,符合C#语法
foreach (var newValue in s)
{
//newValue.aid="upadteID"; //修改值,主键不能改啊
newValue.aname = "newName"; //修改值 

n.SubmitChanges(); // 通知数据库更改记录 

GridView1.DataSource = from n1 in n.a select n1;
GridView1.DataBind();
}
//删除
protected void Button4_Click(object sender, EventArgs e)
{
// 建立对a表的LINQ查询 
var s = from n1 in n.a where n1.aid == "aaa" select n1;//注意:WHERE条件中为双等号,与SQL语句有别,符合C#语法