Entity Framework 6.0 Code First

2023-05-16

目录

  • 一.安装 Entity Framework
    • 1.安装安 EF NuGet 包
    • 2.从包管理器控制台安装
  • 二、创建模型
  • 三、创建上下文
  • 四、读取和写入数据
  • 五、迁移

一.安装 Entity Framework

新建基于.Net Framework 4.8 控制台应用程序。
在这里插入图片描述

1.安装安 EF NuGet 包

在这里插入图片描述

2.从包管理器控制台安装

在 Visual Studio 开发工具打开“工具”>“NuGet 包管理器”>“包管理器控制台”,安装 EntityFramework。

PM> Install-Package EntityFramework

在这里插入图片描述

二、创建模型

在 控制台程序中定义的下面添加以下两个类Blog和Post,Blog跟Post是一对多关系:

public class Blog
{
    public int BlogId { get; set; }
    public string Name { get; set; }
    public virtual List<Post> Posts { get; set; }  // 导航属性
}
public class Post
{
   public int PostId { get; set; }
   public string Title { get; set; }
   public string Content { get; set; }
   public int BlogId { get; set; }
   public virtual Blog Blog { get; set; }  // 导航属性
}

三、创建上下文

定义一个派生自 System.Data.Entity.DbContext 的上下文,用于创建查询和保存数据的会话。

添加派生的上下文 BloggingContext 并且继承 DbContext。

    public class BloggingContext : DbContext
    {
        public DbSet<Blog> Blogs { get; set; }
        public DbSet<Post> Posts { get; set; }

        public BloggingContext() : base("BloggingContext")
        {

        }
    }

数据库连接字符串

	<connectionStrings>
		<add name="BloggingContext"
			 providerName="System.Data.SqlClient"
			 connectionString="Server=localhost;Initial Catalog=数据库名称;User ID=用户名;Password=密码;MultipleActiveResultSets=True;"/>
	</connectionStrings>

四、读取和写入数据

此实例将创建上下文的新实例,并使用它来插入一条 Blog 记录。然后使用 LINQ 查询数据库中检索并遍历输出所有 Blog 记录。

    internal class Program
    {
        static void Main(string[] args)
        {
            using (var db = new BloggingContext())
            {
                // 创建和保存一个Blog实例
                Console.Write("输入 Blog 的名称: ");
                var name = Console.ReadLine();
                var blog = new Blog { Name = name };
                db.Blogs.Add(blog);
                db.SaveChanges();

                // 遍历 Blog 所有记录
                var query = from b in db.Blogs
                            orderby b.Name
                            select b;
                foreach (var item in query)
                {
                    Console.WriteLine(item.Name);
                }

                Console.ReadKey();
            }
        }
    }

运行程序:
在这里插入图片描述

在数据库生成 Blogs 和 Posts 表,并且 Blogs 表添加了一条数据。
在这里插入图片描述

五、迁移

Entity Framework 6.0 CodeFirst 提供迁移功能,迁移功能能够以递增方式更新数据库架构,使其与应用程序的数据模型保持同步,同时保留数据库中的现有数据。

在 Visual Studio 开发工具打开“工具”>“NuGet 包管理器”>“包管理器控制台”,输入Enable-Migrations 命令。

PM> Install-Package EntityFramework

项目出现一个新的 Migrations 文件夹,该文件夹包含 Configuration.cs 和 <以时间时戳命名>_InitialCreate.cs 两个文件,如下图所示。
在这里插入图片描述
现在我们想给 Blog 实体添加一个 Url 属性。

    public class Blog
    {
        public int BlogId { get; set; }
        public string Name { get; set; }
        public string Url { get; set; } // Url 属性
        public virtual List<Post> Posts { get; set; }
    }

通过程序包管理器控制台运行 Add-migration AddUrl 命令,命令格式:Add-migration 命令描述
在这里插入图片描述
项目的 Migrations 文件夹出现 202303110948369_AddUrl.cs 文件,一般情况下我们不改动这个文件。
在这里插入图片描述
通过程序包管理器控制台运行 Update-database 命令,将所有待定迁移应用到数据库。
在这里插入图片描述
迁移成功,Blogs 表出现Url字段,同时迁移记录表 __MigrationHistory 也新增迁移信息。
在这里插入图片描述
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Entity Framework 6.0 Code First 的相关文章

  • 如何在 JPA 实体管理器中锁定整个实体(表)

    我有一个表 从中计算两个日期之间的当前行数 并在同一个表中的 要插入 行中使用结果值 当两个并发请求 例如 A1 和 A2 到来 并且想要同时存储新行 在上面的计算之后 时 我遇到了问题 两者都有相同的结果 例如 10 行 即使A1应该有1
  • 指定的架构无效。错误:“System.Data.Spatial.DbGeography”无法映射到原始类型

    我首先正在做实体框架 v6 数据库 尝试从我的数据上下文访问数据时出现以下错误 未加载关系 Model FK Table1 Table2 因为类型 Model Table1 不可用 以下信息可能有助于解决之前的错误 类型 Model Tab
  • Xcode 11 无法识别核心数据实体

    我刚刚声明了一个名为 Users 数组的实体 var UsersArray Users 我收到这个错误 使用未解析的标识符 用户 提示 我确实导入了 CoreData 并创建了实体 请尝试这个解决方案 解决方案 1 产品 gt 构建测试为我
  • 从POJO获取注释hibernate表名

    我有一个实体 其声明大致如下 Entity Table name myUserTable public class User implements Serializable 我正在创建一个通用 DAO 类 在此过程中我想检索 myUserT
  • 是否应该使用实体类作为请求主体[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 假设我必须保存一个实体 在本例中为 Book 我有下一个代码 RestController RequestMapping books publi
  • 存储库模式可以用于加载“部分实体”吗

    我试图更好地理解领域驱动设计中的存储库模式 存储库模式实现的所有示例都仅处理实体 但是如果我只需要检索实体的某些部分怎么办 例如 我有具有大量属性的客户端实体 我可以在 ClientRepository 中定义这样的东西吗 public I
  • EF 上具有默认过滤器的实体

    我的 edmx 文件中有一个名为 Client 的实体 我必须对其运行多个 linq 查询 但在所有查询上 我需要一个过滤器 假设 active 1 我不想有一个where c active 1对于我的所有查询 我的实体应用了默认过滤器更有
  • 防止 XmlTextReader 扩展实体

    我试图在不扩展实体的情况下读取 XML 文档 对其进行一些操作 然后将其与最初未扩展的实体一起重新保存 直接使用 XDocument 时 它无法加载 抛出异常告诉我它有未扩展的实体 XDocument doc XDocument Load
  • 反应原生 HTML 实体

    我正在从 WordPress 网站成功获取应用程序中的一些数据 一些实体 例如 本机反应不想进行类似的引号以及我遇到的更多问题 有没有办法在 React Native App 中制作 HTML 实体 提前致谢 你应该能够使用类似的东西htm
  • Spring JPA 中的 @Entity 是什么?

    具体来说 我指的是javax persistence Entity 根据我将鼠标悬停在上面时显示的文档 在 VS Code 中它指出 指定该类是一个实体 该注解适用于 实体类 对于 Spring JPA 来说 类是实体意味着什么 Entit
  • 加快 linq/实体结果的返回速度

    不幸的是 我正在维护一个系统 没有考虑到系统拥有数百万条记录后会发生什么 我遇到的问题是当前编写代码的方式 主要是 GetList 方法实际上返回数据库中的每条记录 并且过滤是在 getfull 方法中完成的 我尝试通过将调整的 id 传递
  • Symfony 表单 EntityType 缓存

    在 Symfony v3 2 中 我使用带有多个 EntityType 字段的表单 其中有数百个选项 每个选项都是一个相对较大的对象 因为它们不会经常改变 所以我想在 Symfony 中使用一些缓存 加载它们一次 然后继续为 EntityT
  • Python:解析 XML 文档同时保留实体

    我想问有哪些已知的现有 Python 2 x 库可用于使用内置 DTD 解析 XML 文档without自动扩展实体 对于那些好奇的人来说有问题的文件 JMdict ftp ftp monash edu au pub nihongo JMd
  • 核心数据与同一实体的多个关系

    我现在已经对核心数据进行了相当多的研究 现在我决定是时候在我正在做的新项目中使用它了 我从未在工作项目中使用过它 只是遇到了一些问题 我想获得社区的反馈 我正在做一个基于位置的应用程序 我想在我的核心数据模型中存储 郊游 因此对于每次旅行
  • 实体框架6错误无法加载指定的元数据资源

    我在解决方案中使用实体框架 6 和 模型优先 我将 数据模型 类分离到另一个项目中 以便我可以添加对 数据模型 类的引用 而无需公开我的 数据模型上下文 和连接 我不想将我的实体数据模型项目 尤其是数据库上下文等 暴露给我的 UI 层 我有
  • 实体类和持久类有什么区别?

    我正在经历休眠文档 http docs jboss org hibernate orm 4 3 manual en US html single mapping types entitiesvalues作者使用这些术语的地方persiste
  • MapStruct 实现在 Spring Boot Web 应用程序中不起作用

    我是 Spring Boot 的新手映射结构 http mapstruct org Tool 早些时候 一个项目 由其他团队使用这些技术编写的 没有启动 然后 我在 Mapper 抽象类中进行了一些更改 但现在 Mapper 对象在应用程序
  • 如何在 EF4 中获取实体的第一个 EntityKey 名称

    如何获取 Entity Framework 4 实体的第一个 EntityKey 名称 因为我正在构建存储库系统 并且我想通过 Id 获取项目 EF 中的主键是实体的第一个实体键 我正在使用这个代码 public virtual TEnti
  • XDocument.Save() 删除我的 实体

    我编写了一个工具来使用 C 和 Linq to XML 修复一些 XML 文件 即插入一些缺失的属性 值 该工具将现有 XML 文件加载到 XDocument 对象中 然后 它向下解析节点以插入丢失的数据 之后 它调用 XDocument
  • Doctrine 生成实体命名空间问题?

    好吧 我对原则有最后一个问题 生成 实体命令 我运行以下命令 并得到预期的文件 src MyNamespace Bundle MyNamespaceBundle Resources config doctrine metadata orm

随机推荐

  • 阿里云服务器VNC连接Timed out waiting for a response from the computer报错解决方案

    首先要说明一点 xff0c 如果你是初学者 xff0c 第一次使用阿里云服务器并想获得可视化界面过程中遇到连接问题 xff0c 你可以参考以下方案 因为想要处理网页自动化测试的同时查看效果 xff0c 所以我想搞个VNC Viewer来显示
  • 发现scikit-image

    我是图形方面的新手 xff0c 写错的地方还请大家勘正 不记得从哪看到openCV与python的东西 xff0c 突然产生兴趣 xff0c 我喜欢python3 xff0c 但openCV偏偏最高只有python 2 7的支持 openC
  • Jetpack的学习

    一 ViewModel ViewModel的一个重要作用就是帮助Activity分担一部分的工作 xff0c 专门存放关于界面相关的数据 只要界面上能看到的数据 xff0c 都应该存放到ViewModel中 另外一个很重要的特性就是当手机屏
  • 【centOS 7一个解决“network.service: control process exited, code=exited status=1”方法】

    当我们用finalshell时 xff0c 发现连接不上 xff0c 用ip addr查看时 xff0c ens33没有ip xff0c 查看日志 一开始以为是没有开始网卡 xff0c 于是进入修改网卡配置参数 xff0c 修改 ONBOO
  • Ubuntu 20.04桌面文件夹图标消失及文件系统无法打开

    前言 之前遇到过服务器上桌面图标突然消失的情况 在更换系统语言之后 xff0c 桌面出现过一次这种情况 xff0c 经过重启之后就恢复了 再后来又莫名其妙出现了这么个问题 xff0c 最开始搜索的解决方案是 让你打开任务管理器 gnome
  • vim打造最强systemverilog编辑器

    更多分享内容可访问我的个人博客 https www niuiic top 更新 xff1a 1 对自动补全部分进行加强 xff0c 可以无限自定义snippets和keywords 补全能力完胜vscode 2 使用svlangserver
  • 修改CentOS VNC分辨率

    修改VNC分辨率有两个地方 1 etc sysconfig vncservers 2 usr bin vncserver 有些机器直接设置了这里就行 xff0c 有些要通过设置2才行
  • Debian11系统安装与配置Elasticsearch7.17.6

    安装方式 xff1a 使用安装包进行离线安装 1 下载安装包 下载地址 xff1a Elasticsearch 7 17 6 Elastic 选择DEB X86 64 xff0c 下载后得到文件elasticsearch 7 17 6 am
  • Windows Server 2012 R2 管理员密码忘记如何修改密码

    管理员密码忘记如何修改 人非圣贤孰能无过 有时我们经常会遇到忘记密码的尴尬场景 尤其是本机的管理员密码忘记 xff0c 那么如何更改恢复呢 xff1f xff08 如果你安装系统的过程中本身没有设置过密码 xff0c 那密码就为空或者为Ad
  • XPath 简单语法 (三)

    XPath表达式 2008 02 27 16 55 XML 文档对象模型 DOM 能够以编程方式读取 处理和修改 XML 文档 XPath 表达式 XPath 表达式使用路径表示法 xff08 与 URL 中使用的路径表示法类似 xff09
  • Error: cannot open display: localhost:0.0

    https stackoverflow com questions 12356425 error cannot open display localhost0 0 trying to open firefox from centos 6 在
  • MySQL 5.6 源码目录结构

    基于MySQL 5 6 26源码 源码目录 xff1a BUILD 构建工程的脚本 client 客户端 cmake cmd line utils 命令行工具 dbug 调试库 Docs 文档 extra 一些相对独立的次要工具 inclu
  • 计算机I/O原理

    cpu通过IO命令控制设备 xff0c cpu对设备的控制仅仅可以到达设备控制器 xff0c 无法直接控制设备 设备无法直接和cpu通信 xff0c 设备控制器通过中断机制向cpu反馈信息 即这个一个模型 CPU IO指令 gt 设备控制器
  • 计算机的I/O端口地址表

    PC的I O端口地址表 xff08 I O端口地址表 xff09 http tieba baidu com f kz 61 16042340 I O端口地址表 PC只用了10位地址线 A0 A9 进行译码 xff0c 其寻址的范围为0H 3
  • 利用pthread进行数组求和

    POSIX thread 简称为pthread xff0c Posix线程是一个 POSIX 标准线程 利用多线程可以提高运算速度 利用pthread进行数组求和的程序如下 xff1a include lt stdio h gt inclu
  • 字符串的全排列程序

    include lt iostream gt include lt cstring gt using namespace std void swap char str int i int j char tmp 61 str i str i
  • Google面试总结

    分享 Google面试总结 来源 xff1a 王冠中的日志 终于把Google的面试给搞完了 xff0c 感觉可以算是Tech Interview的顶峰了 这里主要写一下大概流程和内容 xff0c 给大家以后interview一个参考 G的
  • sql server中的注释快捷键

    sql server中的注释快捷键 注释 xff1a Ctrl 43 K Ctrl 43 C xff08 按住Ctrl 然后K C xff09 取消注释 xff1a Ctrl 43 K Ctrl 43 U xff08 按住Ctrl 然后K
  • SpringMVC统一异常处理(返回异常数据而不是跳转到某个页面的方法)

    关于SpringMVC统一异常处理的问题 xff0c 网搜一大把 网上搜的关于如何进行统一异常处理不外乎如下三种方式 xff1a Spring MVC处理异常有3种方式 xff1a 1 使用Spring MVC提供的简单异常处理器Simpl
  • Entity Framework 6.0 Code First

    目录 一 安装 Entity Framework1 安装安 EF NuGet 包2 从包管理器控制台安装 二 创建模型三 创建上下文四 读取和写入数据五 迁移 一 安装 Entity Framework 新建基于 Net Framework