Entity Framework 6.0 Code First

目录

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

一.安装 Entity Framework

新建基于.Net Framework 4.8 控制台应用程序。
Entity Framework 6.0 Code First_第1张图片

1.安装安 EF NuGet 包

Entity Framework 6.0 Code First_第2张图片

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

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

PM> Install-Package EntityFramework

Entity Framework 6.0 Code First_第3张图片

二、创建模型

在 控制台程序中定义的下面添加以下两个类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();
            }
        }
    }

运行程序:
Entity Framework 6.0 Code First_第4张图片

在数据库生成 Blogs 和 Posts 表,并且 Blogs 表添加了一条数据。
Entity Framework 6.0 Code First_第5张图片

五、迁移

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

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

PM> Install-Package EntityFramework

项目出现一个新的 Migrations 文件夹,该文件夹包含 Configuration.cs 和 <以时间时戳命名>_InitialCreate.cs 两个文件,如下图所示。
Entity Framework 6.0 Code First_第6张图片
现在我们想给 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 命令描述
Entity Framework 6.0 Code First_第7张图片
项目的 Migrations 文件夹出现 202303110948369_AddUrl.cs 文件,一般情况下我们不改动这个文件。
Entity Framework 6.0 Code First_第8张图片
通过程序包管理器控制台运行 Update-database 命令,将所有待定迁移应用到数据库。
Entity Framework 6.0 Code First_第9张图片
迁移成功,Blogs 表出现Url字段,同时迁移记录表 __MigrationHistory 也新增迁移信息。
Entity Framework 6.0 Code First_第10张图片
Entity Framework 6.0 Code First_第11张图片

你可能感兴趣的:(ORM框架,.net,linq,数据库,c#)