比较常用的是使用linq和lambda表达式,以及原生的sql查询
直接上Demo:
没有涉及到跨表查询,后续会继续更新
public static void TestQuery01() {
using (SchoolContext context = new SchoolContext()) {
//使用Linq表达式查询所有Grade记录
//List<Grade> gradeList= context.Grades.Select(g => g).ToList<Grade>();
//使用原生的sql查询所有Grade记录
string sql = "SELECT * FROM Grade";
//List<Grade> gradeList = context.Database.SqlQuery<Grade>(sql).ToList();
List<Grade> gradeList = context.Grades.SqlQuery(sql).ToList<Grade>();
List<Grade> grades= (from g in context.Grades select g).ToList();
Grade grade= (from g in context.Grades where g.GradeId == 4 select g).FirstOrDefault<Grade>();
var ge = (from g in context.Grades where g.GradeId == 2 select new {gradeId=g.GradeId,gradeName=g.GradeName}).FirstOrDefault();
Console.WriteLine("Grade Id:"+ge.gradeId+"\tGrade Name:"+ge.gradeName);
}
}
注意:linq中很多查询方法都支持添加过滤条件
更新记录:
public static void TestUpdateRecord() {
using (SchoolContext context = new SchoolContext())
{
int count = 0;
DbContextTransaction tran = null;
try
{
//查看EF生成的底层SQL操作
context.Database.Log = (sql) =>
{
Console.WriteLine(sql);
};
tran = context.Database.BeginTransaction();
//1.更新操作:先查询到记录,然后根据ID进行更新数据
Grade grade = context.Grades.FirstOrDefault(g=>g.GradeId==1);
grade.Principal = "Lebon James";
count = context.SaveChanges();//持久化到数据库
if (count > 0)
{
Console.WriteLine("数据已被更新!");
}
tran.Commit();//提交事务
}
catch (DbEntityValidationException ex)
{
foreach (DbValidationError error in ex.EntityValidationErrors.SelectMany(s => s.ValidationErrors))
{
Console.WriteLine("Error:" + error.PropertyName + "," + error.ErrorMessage);
}
}
catch (System.Data.Entity.Core.UpdateException e)
{
Console.WriteLine(e.InnerException);
}
catch (System.Data.Entity.Infrastructure.DbUpdateException ex) //DbContext
{
Console.WriteLine(ex.InnerException);
}
catch (Exception ex)
{
Console.WriteLine(ex.InnerException);
tran.Rollback();
}
}
}
删除记录:
/// <summary>
/// 删除记录
/// </summary>
public static void TestDeleteRecord() {
using (SchoolContext context = new SchoolContext())
{
int count = 0;
DbContextTransaction tran = null;
try
{
//查看
context.Database.Log = (sql) =>
{
Console.WriteLine(sql);
};
tran = context.Database.BeginTransaction();
//1.删除操作:先查询到记录,然后根据ID进行删除记录
Teacher deletedTeacher=context.Teachers.FirstOrDefault(t=>t.TeacherId==2);
context.Teachers.Remove(deletedTeacher);
count = context.SaveChanges();//持久化到数据库
if (count > 0)
{
Console.WriteLine("数据已被删除!");
}
tran.Commit();//提交事务
}
catch (DbEntityValidationException ex)
{
foreach (DbValidationError error in ex.EntityValidationErrors.SelectMany(s => s.ValidationErrors))
{
Console.WriteLine("Error:" + error.PropertyName + "," + error.ErrorMessage);
}
}
catch (System.Data.Entity.Core.UpdateException e)
{
Console.WriteLine(e.InnerException);
}
catch (System.Data.Entity.Infrastructure.DbUpdateException ex) //DbContext
{
Console.WriteLine(ex.InnerException);
}
catch (Exception ex)
{
Console.WriteLine(ex.InnerException);
tran.Rollback();
}
}
}
添加记录:
public static void TestInsertData() {
using (SchoolContext context = new SchoolContext())
{
Student student = new Student() {
Age=26,
Name="Jane",
Height=185,
CreateDateTime=DateTime.Now,
Address="USA"
};
context.Students.Add(student);
int count= context.SaveChanges();
if (count>0){
Console.WriteLine("数据已成功添加!");
}
}
}