Entity Framework 6.0 Code First

文章详细介绍了如何在.NETFramework4.8环境下使用EntityFramework进行数据库操作,包括安装NuGet包,创建模型(Blog和Post类),建立上下文(BloggingContext),读取和写入数据,以及利用迁移功能更新数据库结构。示例展示了如何添加新记录、查询数据以及如何处理一对多关系的实体模型。
摘要由CSDN通过智能技术生成

一.安装 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 也新增迁移信息。
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值