• EF基础篇-DB First


    EDM entity data model  实体数据模型

     

    Conceptual models 概念模型

    Mappings         连接

    Storage models    存储模型

     

    Orm object relational mapping 对象关系映射

    EF entity framework 是基于ADO.Net的ORM框架,将数据库中的表映射为实体类,建立联系,通过上下文进行数据操作

     

    DB first

    1 新建一个控制台程序

    2 右键点击添加,新建项,如图,选择ADO.NET 实体数据模型

    3 模型配置

    选择来自数据库的EF设计器

    数据库连接配置和测试

    选择所需的表、视图,点击完成

    文件分析

    如图edmx文件是实体属性设置界面,其中的导航属性是外键

    属性操作 移除 新增 从数据库个性模型

    Context文件 存在于Context.tt下

    构造函数中的name对应于App.Config中数据库连接

    DbSet 实体对象的集合,可用于增删改查

    tt文件下存放实体类

    CRUD实际操作

     1            //CRUD
     2             using (var ASEntity = new AccountSystemEntities())
     3             {
     4                 //新增数据
     5                 User u = new User();
     6                 u.Email = "abc@163.com";
     7                 u.UserID = ASEntity.User.Select(p => p.UserID).ToList().Max() == 0 ? 1 : ASEntity.User.Select(p => p.UserID).ToList().Max() + 1;
     8                 u.SerialNumber = "00000";
     9                 u.UserName = "Test";
    10                 u.Password = "123";
    11                 u.RoleID = 1;
    12                 ASEntity.User.Add(u);
    13                 ASEntity.SaveChanges();
    14 
    15                 //查询和修改
    16                 var uu = ASEntity.User.Where(p => p.UserName == "Test").FirstOrDefault();
    17                 uu.Password = "1234";
    18                 ASEntity.SaveChanges();
    19 
    20                 //删除方式一 先查再删除
    21                 ASEntity.User.Remove(uu);
    22                 ASEntity.SaveChanges();
    23 
    24                 //删除方式二 先定义再标记状态删除
    25                 User ud = new User() { UserID=36 };
    26                 ASEntity.Entry<User>(ud).State= System.Data.Entity.EntityState.Deleted;
    27                 ASEntity.SaveChanges();
    28             }        
    View Code

    注意在删除时用EntityState 删除对象必须包含主键,不然会报以下错误

    通过以上实例:

    1 DB First 适用于数据库已存在,主键外键等比较完整的情况

    2 DB First操作简便,数据库变更可及时更新模型

    3 DB First 无需面对数据库,用LINQ即可完成对数据的操作

  • 相关阅读:
    mybatis动态SQl中int类型字段为0 SQl语句不拼接
    Ansible学习(pyenv与virtualenv)
    word
    github学习
    OpenStack搭建遇到的问题2(组件配置错误了,别重装全部,就把模块卸载就行了)
    OpenStack搭建遇到的问题
    Ubuntu 17.04 安装
    docker学习(一)
    MySQL安装
    来自Google的响应式——Agera
  • 原文地址:https://www.cnblogs.com/arvinzd/p/14312837.html
Copyright © 2020-2023  润新知