目录
相关文章
【EntityFramework CodeFirst 轻松上手】(一) 让类的数据持久化更轻松
【EntityFramework CodeFirst 轻松上手】(二) 示例:安装 CodeFirst 开发环境
【EntityFramework CodeFirst 轻松上手】(三) 示例:新建 CodeFirst 实体类
【EntityFramework CodeFirst 轻松上手】(四) 示例:新建 CodeFirst 数据库会话 【DbContext、DbSet】
【EntityFramework CodeFirst 轻松上手】(五) 示例:使用 CodeFirst 数据会话和实体类
本章目录
1、示例:初始化 CodeFirst 数据会话实例
Company在首次运行时,会自动在后台数据库中创建数据结构。默认使用context类的全名作为数据库名。
代码如下:
class Program
{
static void Main(string[] args)
{
using (Company company = new Company())
{
var q = from m in company.Department
where m.Code == "001"
select m;
if (q.Count() > 0)
{
foreach (var m in q)
{
Console.WriteLine(m.Id + "," + m.Code + "," + m.Name);
}
}
Console.ReadLine();
}
}
执行结果:生成数据结构如图。数据库名CompanyDb通过数据连接字符串进行了自定义得到的。

2、示例:新建 CodeFirst 实体类实例
代码如下:
using (Company company = new Company())
{
// 新增实体实例
var department = new Department();
department.Code = "001";
department.Name = "财务部";
company.Department.Add(department);
var department2 = new Department();
department2.Code = "002";
department2.Name = "采购部";
company.Department.Add(department2);
var staff = new Staff();
staff.Code = "111";
staff.Name = "张麻子";
staff.Department = department;
company.Staff.Add(staff);
staff = new Staff();
staff.Code = "222";
staff.Name = "汤师爷";
staff.Department = department;
company.Staff.Add(staff);
staff = new Staff();
staff.Code = "333";
staff.Name = "黄四郎";
staff.Department = department2;
company.Staff.Add(staff);
staff = new Staff();
staff.Code = "444";
staff.Name = "老六";
staff.Department = department2;
company.Staff.Add(staff);
company.SaveChanges();
}
执行结果:数据行如图:

3、示例:查询 CodeFirst 实体类实例
代码如下:
using (Company company = new Company())
{
//查询满足条件的部门
var q = from m in company.Department
where m.Code == "001" || m.Name == "采购部"
select m;
var departments = q.ToList();
if (q.Count() > 0)
{
foreach (var department in departments) //遍历部门查询结果
{
Console.WriteLine("部门:" + department.Id + "," + department.Code + "," + department.Name);
foreach (var m in department.Staffs) //遍历部门的员工
{
Console.WriteLine(" - 员工:" + m.Id + "," + m.Code + "," + m.Name);
}
}
}
}
执行结果:
部门:1,001,财务部
- 员工:1,111,张麻子
- 员工:2,222,汤师爷
部门:2,002,采购部
- 员工:3,333,黄四郎
- 员工:4,444,老六
4、示例:修改 CodeFirst 实体类实例
代码如下:
using (Company company = new Company())
{
//查询并修改一个员工的信息,包括所在部门
var q = from m in company.Staff
where m.Name == "老六"
select m;
if (q.Count() > 0)
{
var m = q.First();
m.Name = "张默";
m.Department = company.Department.Where(n => n.Code == "001").First();
}
//查询并修改一个员工的信息,包括所在部门
q = from m in company.Staff
where m.Code == "333"
select m;
if (q.Count() > 0)
{
var m = q.First();
m.Name = "周润发";
m.Department = company.Department.Where(n => n.Code == "001").First();
}
company.SaveChanges(); //批量保存修改
}
执行结果:(从新执行示例3代码,进行遍历查询)
部门:1,001,财务部
- 员工:1,111,张麻子
- 员工:2,222,汤师爷
- 员工:3,333,周润发
- 员工:4,444,张默
部门:2,002,采购部
5、示例:删除 CodeFirst 实体类实例
代码如下:
using (Company company = new Company())
{
//查询并删除一个员工
var q = from m in company.Staff
where m.Code == "333"
select m;
if (q.Count() > 0)
{
company.Staff.Remove(q.First());
}
//根据Id直接删除一个部门及其员工
var q2 = from m in company.Department
where m.Code == "001"
select m;
company.Department.Remove(q2.First());
company.SaveChanges(); //批量保存修改
}
执行结果:(执行示例4、示例5后,从新执行示例3代码,进行遍历查询)
部门:2,002,采购部
说明:默认情况下,删除部门时,作为其必需要的 Department.Staffs 成员也会被级联删除。
以上

本文围绕EntityFramework CodeFirst展开,介绍了其使用示例,包括初始化数据会话实例、新建、查询、修改和删除实体类实例等操作,还提及首次运行时会自动创建数据结构,默认使用context类全名作为数据库名,删除部门时相关成员会级联删除。
1352

被折叠的 条评论
为什么被折叠?



