LinqToSql ,EF:外键实体的CRD

2011-03-06 21:56:26|  分类: linq |  标签:编程  |字号 订阅

 
 
      接触LinqTosql是很久的事情了,之前一直在拼接字符串,所以一开始就很喜欢这种ORM的方式,强类型用的爽啊,最近开始

改为学习ADO.NET 实体框架了:),概念上的东西网上都很多,当我想实现一个简单的外键表操作时,却没有一个较好的例子,

经过一段摸索后,将最简单的情形给贴出来。

本文用这2种方式通过一个简单的外键关系来演示Insert,Update,Delete操作

DB中建立2张表,这里只考虑1对多的关系:

LinqToSql的方式:

生成的TestDB.dbml:

Insert:

        using(TestDBDataContext db=new TestDBDataContext())  
        {  
            Depatment depatment = new Depatment() {DeptName = "开发部"};  
            Employee employee = new Employee()  
                                    {  
                                        EmpName = "Ringgo.Yao",  
                                        Depatment = depatment  
                                    };  
            db.Depatment.InsertOnSubmit(depatment);  
            db.SubmitChanges();  
        }

当提交Department时,会自动提交Employee

Update:

        using (TestDBDataContext db = new TestDBDataContext())  
        {  
            Depatment depatment = db.Depatment.Where(i => i.DeptId ==2).First();  
            depatment.DeptName = "研发部";  
            Employee employee = new Employee()  
            {  
                EmpName = "Ringgo.Yao",  
                Depatment = depatment  
            };              
            db.SubmitChanges();  
        }

这里修改Department记录的同时添加了一条Employee记录

Delete:

       using (TestDBDataContext db = new TestDBDataContext())  
        {  
          Depatment depatment=db.Depatment.Where(i => i.DeptId == 3).First();  
          var employees=db.Employee.Where(i => i.DeptId == 3).ToList();    
          db.Employee.DeleteAllOnSubmit(employees);  
          db.Depatment.DeleteOnSubmit(depatment);  
          db.SubmitChanges();  
        }

删除的时候要先删除Employee,再删除Department

ADO.NET Entity Framework的方式:

生成的TestDB.edmx:

因为代码看起来似乎区别不大,所以就不进行说明了

Insert:

        using(TestDBEntities db=new TestDBEntities())  
        {  
            Depatment depatment = new Depatment() {DeptName = "开发部"};  
            Employee employee = new Employee() {EmpName = "Ringgo.Yao"};  
            depatment.Employee.Add(employee);  
            db.Depatment.AddObject(depatment);  
            db.SaveChanges();  
        }

Update:

        using (TestDBEntities db = new TestDBEntities())  
        {  
            var dept = db.Depatment.Where(i => i.DeptId == 1).First();  
            dept.DeptName = "研发部";  
            Employee employee = new Employee() {EmpName = "White"};  
            dept.Employee.Add(employee);  
            db.SaveChanges();  
        }
  Delete:
       using (TestDBEntities db = new TestDBEntities())  
        {  
            var dept = db.Depatment.Where(i => i.DeptId == 1).First();  
            foreach (var emp in dept.Employee.ToList())  
            {                  
                dept.Employee.Remove(emp);  
                db.Employee.DeleteObject(emp);  
            }  
            db.Depatment.DeleteObject(dept);  
            db.SaveChanges();  
        }

LinqToSql增加、修改、删除---(转载)的更多相关文章

  1. Oracle 增加修改删除字段

    Oracle 增加修改删除字段 添加字段的语法:alter table tablename add (column datatype [default value][null/not null],…. ...

  2. Oracle 增加修改删除字段与添加注释

    添加字段的语法:alter table tablename add (column datatype [default value][null/not null],….); 修改字段的语法:alter ...

  3. hibernate 批量增加 修改 删除

    4.2  Hibernate的批量处理 Hibernate完全以面向对象的方式来操作数据库,当程序里以面向对象的方式操作持久化对象时,将被自动转换为对数据库的操作.例如调用Session的delete ...

  4. Oracle-表的字段增加修改删除操作

    表结构修改 ALTER TABLE SCOTT.TEST RENAME TO TEST1--修改表名 ALTER TABLE SCOTT.TEST RENAME COLUMN NAME TO NAME ...

  5. js jquery select 操作 获取值,选中选项,增加,修改,删除

    select示例: <select id="sel"> <option value="1">one</option> < ...

  6. Oracle 增加 修改 删除 列

    语法结构如下: alter table tablename add (column datatype [default value][null/not null],….); alter table t ...

  7. openlayers中实现点的拖拽(modify),在layer中增加修改删除point。

    最近忙着整地图,都忘记了总结来沉淀自己,自我检讨一下. 总结一下最近使用openlayer时学习的内容,先说下我的业务逻辑吧,在室内地图中 1,点击新增在地图上新增一个可以拖拽的点,拖拽完成后确定位置 ...

  8. ado.net c#基本的增加,修改,删除,查询

    自己初次学习用的,各种不规范,注释没写 class AdoDemo { static string strConn = @"Data Source=server1;Initial Catal ...

  9. Mysql中用SQL增加、删除、修改(包括字段长度/注释/字段名)总结

    转: Mysql中用SQL增加.删除.修改(包括字段长度/注释/字段名)总结 2018年09月05日 10:14:37 桥Dopey 阅读数:1830   版权声明:本文为博主原创文章,未经博主允许不 ...

  10. iOS --SQL的增加、删除、查找、修改

    iOS对于数据库的操作:增加.删除.查找.修改 首先需要创建一个数据库:本程序的数据库是在火狐浏览器里的插件里写的微量型数据库 火狐找查找SQLite Manager的步骤: 第一步:在工具栏找到附加 ...

随机推荐

  1. bootstrap 模态框动态加载数据

    .页面中添加modal <!-- 模态框(Modal) --> <div class="modal fade" id="showModal" ...

  2. Asset Catalog Creator Free 生成程序内图标的软件

    Asset Catalog Creator Free  生成程序内图标的软件

  3. 《Programming WPF》翻译 第9章 4.模板

    原文:<Programming WPF>翻译 第9章 4.模板 对一个自定义元素最后的设计考虑是,它是如何连接其可视化的.如果一个元素直接从FrameworkElement中派生,这将会适 ...

  4. Linux下Bash运行脚本

    命令行应该这样写: sh -c "脚本字符串" example: sh -c "if ! type dpkg > /dev/null ; then echo 'so ...

  5. Smarty 变量使用

    Smarty的标签都是使用定界符括起来. 默认定界符是{ 和 }, 但定界符可以被改变. 比如说在本手册,我们会假定你在使用默认的定界符. 在Smarty看来,任何在定界符之外的内容,都是静态的,或者 ...

  6. esxi5.5 安装,虚拟机复制

    尝试在vmware workstation上安装hadoop,感觉太慢了. 好在家里的台式机配置还可以,所以就想在它上面虚拟出几台服务器出来. 台式机配置如下: 虚拟出来三个应该没问题了吧. 第一步, ...

  7. SQL server 中 COUNT DISTINCT 函数

    目的:统计去重后表中所有项总和. 直观想法: SELECT COUNT(DISTINCT *) FROM [tablename] 结果是:语法错误. 事实上,我们可以一同使用 DISTINCT 和 C ...

  8. AFN的二次封装

    http://www.cnblogs.com/sxwangjiadong/p/4970751.html

  9. c++编程碰到的奇怪问题与解决

    今天写一个工具,调试过程中莫名其妙崩溃,类某些成员变量指针很奇怪,为0x00003001.最后检查的结果居然是这样的: 文件class1.h: class1 { int a; int b; } 文件: ...

  10. 利用Unicorn和Idaemu辅助解决Geekpwn SecretCode

    在前面的些文章里,我提到了怎么交叉编译Unicorn-engine,以及在windows上使用Unicorn python bindings进行分析程序.这一次我介绍下如何使用Unicorn-engi ...