【EntityFramework CodeFirst 轻松上手】(五) 示例:使用 CodeFirst 数据会话和实体类

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

目录

相关文章

【EntityFramework CodeFirst 轻松上手】(一) 让类的数据持久化更轻松

【EntityFramework CodeFirst 轻松上手】(二) 示例:安装 CodeFirst 开发环境

【EntityFramework CodeFirst 轻松上手】(三) 示例:新建 CodeFirst 实体类

【EntityFramework CodeFirst 轻松上手】(四) 示例:新建 CodeFirst 数据库会话 【DbContext、DbSet】

【EntityFramework CodeFirst 轻松上手】(五) 示例:使用 CodeFirst 数据会话和实体类

本章目录

1、示例:初始化 CodeFirst 数据会话实例

2、示例:新建 CodeFirst  实体类实例

3、示例:查询 CodeFirst 实体类实例

4、示例:修改 CodeFirst 实体类实例

5、示例:删除 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 成员也会被级联删除。

以上

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雕技小虫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值