(EF Core) 入门示例
概述
Entity Framework (EF) Core 是轻量化、可扩展、开源和跨平台版的常用 Entity Framework 数据访问技术。
EF Core 可用作对象关系映射程序 (O/RM),以便于 .NET 开发人员能够使用 .NET 对象来处理数据库,这样就不必经常编写大部分数据访问代码了。
EF Core 支持多个数据库引擎,请参阅数据库提供程序了解详细信息。
基于 .NET Core 的 EF Core 入门
在本教程中,将创建一个 .NET Core 控制台应用,该应用使用 Entity Framework Core 对 Microsoft SQL Server 数据库执行数据访问。
创建新项目
-
新建控制台项目:
执行 PowerShell 命令
dotnet new console -o ConsoleApp
更改当前目录
-
将当前目录更改为应用程序的目录,如下所示:
cd ConsoleApp
安装 Entity Framework Core
-
安装 Microsoft.EntityFrameworkCore.SqlServer 和 Microsoft.EntityFrameworkCore.Tools
dotnet add package Microsoft.EntityFrameworkCore.SqlServer dotnet add package Microsoft.EntityFrameworkCore.Tools
-
运行
dotnet restore
来安装新的程序包。
创建模型
-
使用以下内容创建一个新的 Model.cs 文件。
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;namespace ConsoleApp
{
public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("Server=JASONYZP;Database=ConsoleApp;User Id=sa;Password=1;");
}
}public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }public ICollection<Post> Posts { get; set; }
}public class Post
{
public Post()
{
Random rd = new Random();
Title = "test" + PostId;
Content = "";
BlogId = rd.Next(30000);
}
public int PostId { get; set; }
public string Title { get; set; }
public string Content { get; set; }public int BlogId { get; set; }
public Blog Blog { get; set; }
}
}在实际应用程序中,应将每个类放在单独的文件中,并将连接字符串放在配置文件或环境变量中。 为简化本教程,所有内容均放在一个文件中。
创建数据库
有了模型后,即可通过迁移创建数据库。
- 运行
dotnet ef migrations add InitialCreate
以为迁移搭建基架,并为模型创建一组初始表。 - 运行
dotnet ef database update
以将新迁移应用到数据库。 在应用迁移之前,此命令可创建数据库。
使用模型
-
打开 Program.cs 并将内容替换为以下代码:
using (var db = new BloggingContext())
{
var one = new Blog { Url = "http://www.yuzhupeng.com" };
var post = new Post();
post.Blog = one;
post.Content = "test";
db.Posts.Add(post);
var count = db.SaveChanges();
Console.WriteLine("{0} records saved to database", count);
Console.WriteLine();
Console.WriteLine("All blogs in database:");
foreach (var blog in db.Blogs)
{
Console.WriteLine(" - {0}", blog.Url);
}
} -
运行
dotnet run
从控制台测试应用。
其中遇到以下问题:
1.dotnet ef migrations add InitialCreate 无法执行 因为找不到指定的命令或文件
解决方案:
1、https://docs.microsoft.com/zh-cn/aspnet/core/data/ef-mvc/migrations?view=aspnetcore-2.0
2、使用PM> Add-Migration InitialCreate
Update-Database 创建数据表
总结:
1.EF CORE不需要映射文件,可以直接save保存 关联模型