MVC 学习(二)之Linq to Sql 简单Demo

  Linq to Entities 已经我的一篇博文中阐述了,这里阐述一下简单的Linq to Sql 的增删改查。Linq to sql 与Linq to Entities虽然同属于DataBase-First,但存在着一些细小的差别。

  Linq to Sql 的实体类载体的后缀为dbml。

  此篇Demo的数据库与前一篇博文Linq to Entities的数据库一致,VS2010与Sql 2005。

  首先 创建dbml文件。步骤如下

  1、MVC 学习(二)之Linq to Sql  简单Demo

  2、MVC 学习(二)之Linq to Sql  简单Demo

  这样我们就建立好了dbml文件了,数据库连接的配置文件也已经在app.config文件中自动生成了。

  No1、查询出所有学生的姓名、年龄以及所选课程,代码如下

Main()函数代码如下
StudentDataContext StudentDB = new StudentDataContext();
var Students = StudentDB.StudentInfo.ToList<StudentInfo>();
foreach (var student in Students)
{
Console.WriteLine(student);
string sourceName = string.Empty; foreach (var source in student.SourceInfo)
{
sourceName += source.SourceName + " ";
}
Console.WriteLine("所选课程有:" + sourceName); } public partial class StudentInfo
{
public override string ToString()
{
return string.Format("姓名:{0},年龄 {1}", this._SName, this._SAge);
}
}

  No2、增加一个学生的信息,并且添加此学生所选课程。

  如果我们不写Sql语句,则代码如下

            StudentInfo StudentModel = new StudentInfo
{
SID = ,
SName = "范冰冰",
SAge =
};
SourceInfo SourceModel = new SourceInfo
{
SourceName = "高级护理",
StudentID =
};
StudentDB.StudentInfo.InsertOnSubmit(StudentModel);
StudentDB.SourceInfo.InsertOnSubmit(SourceModel);
StudentDB.SubmitChanges();

  当然Linq to Sql是灵活的,它提供了ExecuteCommand等方法供我们写Sql语句。代码如下

string strSql = "insert into StudentInfo values({0},{1},{2})";
StudentDB.ExecuteCommand(strSql, new object[] { , "花样年华", });

  No3、修改数据。

  当不直接书写Sql语句修改数据时,需要将修改的数据取出,然后将需要更改字段的值重新赋值,最后提交给数据库。代码如下

 var StudentModel = StudentDB.StudentInfo.SingleOrDefault(c => c.SID == );
StudentModel.SAge = ;
StudentDB.SubmitChanges();

  如果使用Sql语句更新数据,代码如下

string strSql = "update StudentInfo set SAge=25 where SID=6";
StudentDB.ExecuteCommand(strSql);

  No4、删除数据。代码如下(删除Sql语句这里我就不写了) 

       var StudentModel = StudentDB.StudentInfo.SingleOrDefault(c => c.SID == );
if (StudentModel != null)
{
StudentDB.StudentInfo.DeleteOnSubmit(StudentModel);
StudentDB.SubmitChanges();
}

  至此,Linq to Sql简单的增删改查Demo就完成了。

上一篇:ORACLE数据库之PL/SQL触发器、rownum、动态SQL、数据库之视图与索引


下一篇:Thermostat:双层存储结构的透明巨页内存管理机制