企业 网站 制作,室内设计师前景怎么样,网站建设q a,怎么成立网站一.前言 Entity Framework#xff08;后面简称EF#xff09;作为微软家的ORM#xff0c;自然而然从.NET Framework延续到了.NET Core。以前我也嫌弃EF太重而不去使用它#xff0c;但是EF Core#xff08;Entity Framework Core#xff09;已经做了很多性能优化#xff0… 一.前言 Entity Framework后面简称EF作为微软家的ORM自然而然从.NET Framework延续到了.NET Core。以前我也嫌弃EF太重而不去使用它但是EF CoreEntity Framework Core已经做了很多性能优化还有一些增加新特性吸引了我去使用它。关于EF Core 2.0 的新特性请看http://www.cnblogs.com/stulzq/p/7366044.html 二.控制台程序使用 EF CoreCode First 1.新建一个.NET Core控制台程序 2.通过Nuget安装 EF Core Sql Server 请安装 Microsoft.EntityFrameworkCore.SqlServer MySql/MariaDB请安装 Pomelo.EntityFrameworkCore.MySql (2.0及以上版本) MySql/MariaDB 推荐使用Pomelo EF Core组件因为官方的目前可能存在bugPomelo EF Core同样是微软官方所推荐的。 其他数据库请查看https://docs.microsoft.com/zh-cn/ef/core/providers/ 安装好EF Core之后打开项目*.csproj文件 添加如下代码。 ItemGroupDotNetCliToolReference IncludeMicrosoft.EntityFrameworkCore.Tools.DotNet Version2.0.0 //ItemGroup 本文所用数据库为MariaDB 3.添加实体 public class Blog{ public int BlogId { get; set; } public string Url { get; set; } public ListPost 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 Blog Blog { get; set; }
} 4.添加数据库上下文 public class BloggingContext : DbContext{ public DbSetBlog Blogs { get; set; } public DbSetPost Posts { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { //配置mariadb连接字符串optionsBuilder.UseMySql(Serverlocalhost;Port3306;DatabaseBloggingDB; Userroot;Password;);}
} 5.使用 static void Main(string[] args){ using (var db new BloggingContext()){db.Blogs.Add(new Blog { Url http://blogs.msdn.com/adonet }); 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);}}Console.ReadKey();
} 现在F5运行肯定会出异常的因为我们需要使用的数据库并不存在EF Core默认的创建数据库策略已经和EF不用请看后面的迁移操作 三.ASP.NET Core 使用 EF CoreCode First 1.创建一个asp.net core 2.0 mvc项目 2.通过Nuget安装 EF Core同上 3.添加实体同上 4.添加数据库上下文 public class BloggingContext : DbContext{ public BloggingContext(DbContextOptionsBloggingContext options): base(options) { } public DbSetBlog Blogs { get; set; }public DbSetPost Posts { get; set; }
} 5.配置EF Core 在Startup添加如下代码 public void ConfigureServices(IServiceCollection services){services.AddDbContextPoolBloggingContext(options options.UseMySql(Serverlocalhost;Port3306;DatabaseWebBloggingDB; Userroot;Password;)); //配置mariadb连接字符串} 6.在Controller中获取数据库上下文。 这里我们利用ASP.NET Core的依赖注入来获取数据库上下文。 private readonly BloggingContext _context;public BlogsController(BloggingContext context){_context context;
} 四.EF Core的迁移操作 前面说过EF Core默认的创建数据库策略已经和EF不用需要我们通过迁移来创建数据库 这里不论是是控制台还是ASP.NET Core操作都是一样的这里以ASP.NET Core作为示例。 1.将ASP.NET Core项目设为启动项目 2.打开程序包管理器控制台并选择对应的项目 3.执行添加迁移命令 Add-Migration init 4.迁移成功可以看见在项目根目录下添加了一个Migrations文件夹 5.更新迁移到数据库执行命令 Update-Database 这时我们的数据库已经被创建 现在就可以正常运行控制台或者ASP.NET Core程序了 #EF Core迁移更新到生产环境 EF Core将迁移更新到生产环境可以使用Script-Migration命令生成sql脚本然后到生产数据库执行 语法 Script-Migration [-From] String [-To] String [-Idempotent] [-Output String] [-Context String] [-Project String] [-StartupProject String] [CommonParameters] 示例Script-Migration -From 20171023035934_v113 -To 20171024035934_V114 上面的命令会生成113版本迁移到114版本的SQL语句 生成SQL语句如下图 还有一种方法就是通过代码进行自动迁移这里暂时不做叙述后面的文章会详细介绍。 五. EF Core 的 DB First 前面所介绍的都是Code First这里介绍一下DB First大型项目推荐使用DB First。 1.创建数据库Sql Server CREATE DATABASE [Blogging];
GOUSE [Blogging];
GOCREATE TABLE [Blog] ([BlogId] int NOT NULL IDENTITY,[Url] nvarchar(max) NOT NULL, CONSTRAINT [PK_Blog] PRIMARY KEY ([BlogId])
);
GOCREATE TABLE [Post] ([PostId] int NOT NULL IDENTITY,[BlogId] int NOT NULL,[Content] nvarchar(max),[Title] nvarchar(max), CONSTRAINT [PK_Post] PRIMARY KEY ([PostId]), CONSTRAINT [FK_Post_Blog_BlogId] FOREIGN KEY ([BlogId]) REFERENCES [Blog] ([BlogId]) ON DELETE CASCADE);
GOINSERT INTO [Blog] (Url) VALUES(http://blogs.msdn.com/dotnet),
(http://blogs.msdn.com/webdev),
(http://blogs.msdn.com/visualstudio)GO 2.新建一个.NET Core控制台程序 3.通过Nuget添加EF 运行 Install-Package Microsoft.EntityFrameworkCore.SqlServer 运行 Install-Package Microsoft.EntityFrameworkCore.Tools (EF工具包创建实体) 4.执行下面的命令创建实体 Scaffold-DbContext Data Source.;Initial CatalogBlogging;Integrated SecurityTrue Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models 命令格式为 Scaffold-DbContext 数据库连接字符串 EF组件名(Microsoft.EntityFrameworkCore.SqlServer/Pomelo.EntityFrameworkCore.MySql/等等) -OutputDir 输出文件夹名称 然后查看项目目录可以看到一件多了一个Models文件夹下面有创建的实体和数据库上下文。 ASP.NET Core项目操作是一样的。 本文Demo: https://github.com/stulzq/EntityFrameworkCore2Demo 原文地址http://www.cnblogs.com/stulzq/p/7717873.html .NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注