zoukankan      html  css  js  c++  java
  • Entity Framework

    叙述:
                Entity Framework 是微软借鉴ORM思想开发自己的ORM框架,ORM就是将数据表与实体对象相互映射的一种思想。
                Entity Framework 的本质还是ADO.NET操作,只是它将ADO.NET封装的更加高级而已。

    如何使用?
                1,创建实体对象模型。
                2.选择从数据库生成实体模型。这里的空模型是可以通过先建模然后根据模型数据库,他们之间可以相互映射,这也是ORM思想。
                   
     
                 在这里的时候可以选择需要映射的表了,选择了就会根据表创建实体类,还有存储过程,视图等等。都可以映射。
                   
                  都设置完成后,会生成一个edmx 的文件
                  接下来展开这个文件,你会看到如下:
                   

    如何操作数据库?

                1.执行查询操作。
                
     
     (1)创建上下文的对象,例如上面的图,上下文对象则是:
    1. TestDemoEntities2 te = new TestDemoEntities2();
    (2)创建好上下文对象后,可以直接使用, 上下(文对象 .实体类)的方式来获取实体值!
    1. //直接遍历查询
    2. foreach (var item in te.UserMsg)
    3. {
    4. Console.WriteLine(item.Id + " " + item.Name);
    5. }
    1. //第二种查询方法。
    2. #region 实现查询功能的第二种方法,Linq 和List 集合
    3. TestDemoEntities2 tst1 = new TestDemoEntities2();
    4. IQueryable<UserMsg> linq = from user in tst1.UserMsg
    5. select user;
    6. List<UserMsg> uMsgs = new List<UserMsg>();
    7. foreach (var item in linq)
    8. {
    9. if (item.Id <1000001)
    10. {
    11. uMsgs.Add(item);
    12. }
    13. }
    14. foreach (var userList in uMsgs)
    15. {
    16. Console.WriteLine(userList.Id +" "+ userList.Name);
    17. }
    18. #endregion
    二、删除数据:
        UserMsg 是对应数据库表的实体类,
        TestDemoEntities2 是上下文对象,以下是删除数据的2种写法,根据主键ID来删除数据,当数据库不存在要删除的ID的时候则会报错:
        
    1. //创建实体类对象
    2. UserMsg userMsg = new UserMsg();
    3. userMsg.Id = 10002;
    4. //上下文对象
    5. TestDemoEntities2 te = new TestDemoEntities2();
    6. te.UserMsg.Attach(userMsg);
    7. //第一种写法
    8. te.Entry(userMsg).State = System.Data.EntityState.Deleted;
    9. //第二种写法
    10. te.UserMsg.Remove(userMsg);
    11. int resultMsg = te.SaveChanges();
    12. Console.WriteLine(resultMsg);
    三、修改数据
        1.创建对应数据库表的实体对象,或者查询获取一个实体对象。都行。
    反正如果这个实体对象对应是 主键在数据库中找不到,那么就会报错如下:
        
         2.使用上下文对象来管理实体类,修改状态为Update 然后 调用 SaveChenges();方法保存就OK了
    1. //创建实体类对象
    2. UserMsg userMsg = new UserMsg();
    3. userMsg.Id = 100011;
    4. userMsg.Name = "隔壁老王";
    5. userMsg.Sex = "男";
    6. userMsg.Age = 12;
    7. userMsg.Phone = "11232131421";
    8. //上下文对象
    9. TestDemoEntities2 te = new TestDemoEntities2();
    10. //将实体付到上下文里面管理
    11. te.UserMsg.Attach(userMsg);
    12. //把所有修改状态的实体生成:Update;
    13. te.Entry(userMsg).State = System.Data.EntityState.Modified;
    14. int resultMsg = te.SaveChanges();
    15. Console.WriteLine(resultMsg);
    16. Console.ReadKey();






  • 相关阅读:
    Django模型层Meta内部类详解
    jquery checkbox的相关操作——全选、反选、获得所有选中的checkbox
    c# 委托与异步调用
    DataTable转成List集合
    c# winform 自动升级
    C# winform单元格的formatted值的类型错误 DataGridView中CheckBox列运行时候System.FormatException异常
    C#创建无窗体的应用程序
    sql 一个表的字段更新至另一个字段的方法
    datagridview 获取选中行的索引
    CHECKEDLISTBOX用法总结
  • 原文地址:https://www.cnblogs.com/BookCode/p/5e52f4817042f9c57951c51df793e451.html
Copyright © 2011-2022 走看看