Entity framework
Entity Framework Core
Entity FrameWork Core 简称EF ,EF使用教程
1:创建EF
3
1
//使用VS2019依次点击:“工具”>“NuGet 包管理器”>“包管理器控制台”
2
3
运行此命令安装EF: Install-Package Microsoft.EntityFrameworkCore.Sqlite
2:创建模型,添加类Movies.cs类
1
3:连接数据库
9
1
//1:首先在appsettings里面设置连接字符串
2
"ConnectionStrings": {//MvcMovieContext-1是数据库的名称
3
"MvcMovieContext": "Server=(localdb)\\mssqllocaldb;Database=MvcMovieContext-1;Trusted_Connection=True;MultipleActiveResultSets=true"
4
}
5
6
2:然后在startup里面的CongifUreServices方法里面添加
7
8
services.AddDbContext<MvcMovieContext>(options =>//MvcMovieContext是数据库的名称
9
options.UseSqlServer(Configuration.GetConnectionString("MvcMovieContext")));
构造函数参数
9
1
//类名
2
public class BloggingContext : DbContext
3
{//类名类名
4
public BloggingContext(DbContextOptions<BloggingContext> options)
5
: base(options)
6
{ }
7
//Blog控制器,也就是类
8
public DbSet<Blog> Blogs { get; set; }
9
}
在asp当中使用
7
1
//EF的构造函数
2
private readonly MvcMovieContext _context;
3
//当前的类名EF的构造函数
4
public MoviesController(MvcMovieContext context)
5
{
6
_context = context;
7
}
创建数据库

26
1
public static void Main(string[] args)
2
{
3
var host = CreateHostBuilder(args).Build();
4
5
CreateDbIfNotExists(host);
6
7
host.Run();
8
}
9
//创建数据库
10
private static void CreateDbIfNotExists(IHost host)
11
{
12
using (var scope = host.Services.CreateScope())
13
{
14
var services = scope.ServiceProvider;
15
16
try
17
{
18
var context = services.GetRequiredService<aspcoerdeom1>();
19
context.Database.EnsureCreated();
20
}
21
catch (Exception ex)
22
{
23
Console.WriteLine("创建出错!"+ex.Message);
24
}
25
}
26
}
4
1
EnsureCreated 和 EnsureDeleted //创建数据库和删除数据库
2
3
创建:dbContext.Database.EnsureCreated();
4
删除:dbContext.Database.EnsureDeleted();
定义表名
6
1
[Table("blogs")] //定义表名
2
public class Blog
3
{
4
public int BlogId { get; set; }
5
public string Url { get; set; }
6
}
表架构
7
1
//使用关系数据库时,表按约定在数据库的默认架构中创建。 例如,Microsoft SQL Server 将使用 dbo 架构(SQLite 不支持架构)。
2
[Table("blogs", Schema = "blogging")]
3
public class Blog
4
{
5
public int BlogId { get; set; }
6
public string Url { get; set; }
7
}
排除类型
5
1
[NotMapped] //排除类型
2
public class BlogMetadata
3
{
4
public DateTime LoadedFromDatabase { get; set; }
5
}
列名
6
1
public class Blog
2
{
3
[Column("blog_id")] //定义列名
4
public int BlogId { get; set; }
5
public string Url { get; set; }
6
}
列数据类型
9
1
public class Blog
2
{
3
[MaxLength(500)]//最大值
4
public int BlogId { get; set; }
5
[Column(TypeName = "varchar(200)")] //定义长度
6
public string Url { get; set; }
7
[Column(TypeName = "decimal(5, 2)")] //定义精度为5小数为2
8
public decimal Rating { get; set; }
9
}
必须填的类型
6
1
public class Blog
2
{
3
public int BlogId { get; set; }
4
[Required] //使用Required
5
public string Url { get; set; }
6
}
Keys
5
1
class Car
2
{
3
[Key] //键
4
public string LicensePlate { get; set; }
5
}
在添加时添加值
5
1
public class Blog
2
{
3
[DatabaseGenerated(DatabaseGeneratedOption.Identity)] //可用于自增id,自身成值
4
public DateTime Inserted { get; set; }
5
}
在添加或更新时生成值
1
1
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
并发标记
10
1
public class Person
2
{
3
[Timestamp]
4
public string LastName { get; set; }
5
6
}
7
//Timestamp/rowversion 是一个属性,在每次插入或更新行时,数据库会自动为其生成新值。
8
//此属性也被视为并发标记,这确保了在你查询行后,如果正在更新的行发生了更改,则会出现异常。
9
//确切的详细信息取决于所使用的数据库提供程序;
10
//对于 SQL Server,通常使用byte [] 属性,该属性将设置为数据库中的ROWVERSION列。
查询数据
20
1
------------------查询所有数据
2
using (var context = new BloggingContext())//-----using是指{}内的代码会在运行完后释放
3
{
4
var blogs = context.Blogs.ToList();///查询
5
}
6
7
------------------加载单个实体
8
using (var context = new BloggingContext())
9
{
10
var blog = context.Blogs
11
.Single(b => b.BlogId == 1);
12
}
13
14
------------------筛选
15
using (var context = new BloggingContext())
16
{
17
var blogs = context.Blogs
18
.Where(b => b.Url.Contains("dotnet"))
19
.ToList();
20
}
数据库迁移
19
1
-------------打开解决方案跟目录:cmd
2
3
4
-------------安装工具
5
6
dotnet tool install --global dotnet-ef//安装命令行工具
7
dotnet ef migrations add InitialCreate //生成迁移文件
8
9
-------------开始迁移
10
11
dotnet ef database update//迁移成功
12
13
--------------如果需要拓展和更新//再次迁移
14
15
dotnet ef migrations add AddBlogCreatedTimestamp
16
17
--------------开始迁移
18
19
dotnet ef database update//迁移成功
删除迁移
1
1
dotnet ef migrations remove
编程方式迁移
12
1
public static void Main(string[] args)
2
{
3
var host = CreateHostBuilder(args).Build();
4
5
using (var scope = host.Services.CreateScope())
6
{
7
var db = scope.ServiceProvider.GetRequiredService<ApplicationDbContext>();//访问
8
db.Database.Migrate();//迁移
9
}
10
11
host.Run();
12
}
本文来自博客园,作者:Entity110,转载请注明原文链接:https://www.cnblogs.com/rdr2/p/15232085.html

浙公网安备 33010602011771号