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 的相关文章

  • 存储库模式可以用于加载“部分实体”吗

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

    在 Symfony v3 2 中 我使用带有多个 EntityType 字段的表单 其中有数百个选项 每个选项都是一个相对较大的对象 因为它们不会经常改变 所以我想在 Symfony 中使用一些缓存 加载它们一次 然后继续为 EntityT
  • LINQ to Entities 无法识别 ElementAt 方法

    我正在使用该方法Queryable ElementAt Int32 获取查询结果的特定元素 IQueryable
  • LINQ to Entities 多重联接

    你好 我正在尝试复制这个 mysql 查询 SELECT a id a title a description a categories id c name d title FROM ads AS a INNER JOIN location
  • 实体框架和多线程

    我们在设计多线程实体框架驱动的应用程序时遇到一些问题 需要一些指导 我们在不同的线程上创建实体 将实体添加到集合中 然后将集合数据绑定到各种 WPF 控件 ObjectContext 类不是线程安全的 因此管理它我们基本上有 2 个解决方案
  • 模型和实体有什么区别[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我很困惑不明白这句话的含义 Entity Model DataModel ViewModel 任何人都可以帮助我理解它们吗 这些术语的
  • Symfony2 表单中实体字段类型的附加属性

    在Symfony2中 有没有一种方法可以将更多字段从实体映射到从基于实体的表单生成的选择下拉列表的选项标签 我目前有类似的东西 builder gt add creditcard entity array label gt Credit C
  • ASP.NET MVC 4 引用单父实体的多个外键

    我正在尝试开发一个 ASP NET MVC 4 应用程序 可以根据玩家的进攻 防守和助攻技能对他们进行评级 进攻 防守和助攻是球员表上的外键 引用相同的查找表 评分 我有以下父实体 public class Rating public in
  • hibernate @Entity 仅在内部类上(顶级类不是 @Entity)

    我想将内部类保留到数据库中 但这不起作用 有可能这样做吗 或者我应该将该内部类放入新的普通文件中 现在我收到错误 IllegalArgumentException Unknown entity models foo bar 我的班级文件 p
  • 对于这个实体层次结构来说,什么是好的持久性设计?

    我是 JPA 新手 正在尝试制定以下课程的设计 所有类都重写了 equals 和 hashcode getter 和 setter 以及空构造函数 我有一个所有实体的基类 public abstract class BaseEntity p
  • ASP.NET 应用程序中的实体框架 ObjectContext 单元测试

    我使用以下代码为每个 ASP NET 请求创建实体框架 ObjectContext public static class ObjectContextPerRequest public static EStudyTestDatabaseEn
  • # 符号的 HTML 字符实体是什么?

    符号的 HTML 字符实体是什么 我四处寻找 英镑 不断返回货币 哈希 和 数字 但我尝试的似乎没有变成正确的字符 您可以在以下位置搜索单个字符 文件格式信息 http www fileformat info info unicode ch
  • Symfony2表单类型实体添加额外选项

    我有以下 Symfony 表单字段 它是从实体加载的下拉列表 gt add measureunit entity array label gt Measure Unit class gt TeamERPBaseBundle MeasureU
  • 为什么 TableAttribute 位于实体框架 Dll 中?

    Table 属性 可用于将 POCO 类映射到正确的数据库名称 架构 位于 EntityFramework dll 中是否有充分的理由 这是否会阻止您创建一个仅包含您的实体而不依赖于特定数据访问技术的域项目 例如 如果我使用此属性 我不相信
  • 每个 System.ComponentModel.DataAnnotations 属性的用途是什么?

    我正在使用带有 POCO 的实体框架 4 制作 MVC 3 应用程序 我想尽可能多地注释我的所有实体 然而 我遇到一个问题 我无法找到有关每个属性含义的良好文档 有些非常简单 比如 Required or StringLength 具有像这
  • 如何返回空实体的响应状态 405?

    如何在 java REST 中返回带有空实体的响应状态 405 POST Path path public Response createNullEntity return Response created null status 405
  • Hibernate 和可序列化实体

    有谁知道是否有一个框架能够从实体类中剥离 Hibernate 集合以使它们可序列化 我查看了 BeanLib 但它似乎只进行实体的深层复制 而不允许我为实体类中的集合类型指定实现映射 BeanLib 目前不适用于 Hibernate 3 5
  • ADO 实体框架创建不需要的实体键

    我需要使用无法更改的数据库中的表 使用链接服务器 因此 我的架构的一部分是这些表的视图 我无法在数据库中创建 FK 当我在 ADO NET 实体框架中创建关联时 我遇到了问题 因为外部数据库表上的第二列有一个索引 并且 EF 正在为其创建一
  • 从存储库获取时,Doctrine 如何在不调用 __construct 方法的情况下创建实体?

    我在构造函数中编写了下一个代码 public function construct die creating entity 当我创建实体实例时new运算符如 entity new Entity 我看到creating entity text
  • 使用原则 2 的 UniqueEntity

    我正在使用 Zend Framework 2 并且创建了一个用户实体 现在我试图使用户名字段唯一 但是出现以下错误 Semantical Error The annotation UniqueEntity in class User Ent

随机推荐

  • 阿里云服务器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