【译】Announcing Entity Framework Core 5.0 Preview 5
今天我们宣布EF Core 5.0发布第五个预览版。 1 先决条件EF Core 5.0 的预览版要求? .NET Standard 2.1。这意味着:
2 如何获取EF Core 5.0预览版使用NuGet添加,例如添加sql Server的提供程序: dotnet add package Microsoft.EntityFrameworkCore.sqlServer --version 5.0.0-preview.5.20278.2
目前发布的 EF Core包包括:
我们还发布了Microsoft.Data.sqlite.Core ADO.NET provider的预览版。 3 安装dotnet ef与EF Core 3.0和3.1一样,dotnet EF命令行工具不再包含在.NET Core SDK中。在执行EF Core的migration或scaffolding命令之前,必须将此包作为全局或本地工具安装。 若要全局安装预览版工具,需要先使用以下命令卸载现有的版本: dotnet tool uninstall --global dotnet-ef
然后,进行安装: dotnet tool install --global dotnet-ef --version 5.0.0-preview.5.20278.2 可以将此新版本的dotnet ef与使用较旧版本的EF Core运行时的项目一起使用。 4 EF Core 5.0预览版的一些新功能4.1 数据库排序规则现在可以在 EF Model中指定数据库的默认排序规则。 modelBuilder.UseCollation("German_PhoneBook_CI_AS"); 然后,Migrations将生成以下内容以在 sql Server 上创建数据库: CREATE DATABASE [Test]
COLLATE German_PhoneBook_CI_AS;
也可以指定用于特定数据库列的排序规则。 例如: modelBuilder .Entity<User>() .Property(e => e.Name) .UseCollation("); 为了那些不使用migration的人,现在,在 DbContext scaffolding时,将从数据库进行反向工程。最后,EF.Functions.Collate() 允许使用不同的排序规则进行临时查询。 例如: context.Users.Single(e => EF.Functions.Collate(e.Name,French_CI_AS") == Jean-Michel Jarre"); 这将生成 sql Server 的以下查询: SELECT TOP(2) [u].[Id],[u].[Name] FROM [Users] AS [u] WHERE [u].[Name] COLLATE French_CI_AS = N'' 请注意,临时排序规则应谨慎使用,因为它们会对数据库性能产生负面影响。 4.2 传递参数给IDesignTimeDbContextFactory参数现在从命令行传入IDesignTimeDbContextFactory 的 CreateDbContext 方法。 例如,为了指示这是开发构建,可以在命令行上传递自定义参数(例如 dev): dotnet ef migrations add two --verbose --dev 然后,此参数将传递到工厂: public class MyDbContextFactory : IDesignTimeDbContextFactory<SomeDbContext> { public SomeDbContext CreateDbContext(string[] args) => new SomeDbContext(args.Contains(--dev")); } 4.3 具有标识解析的无跟踪查询现在,可以将无跟踪查询配置为执行标识解析。 例如,以下查询将为每个Post创建新的Blog实例,即使每个Blog具有相同的主键也是如此。 context.Posts.AsNoTracking().Include(e => e.Blog).ToList(); 但是,可以更改此查询以确保只创建单个 Blog 实例,但代价通常是稍微慢一点,并且使用更多内存: context.Posts.AsNoTracking().PerformIdentityResolution().Include(e => e.Blog).ToList(); 请注意,这仅适用于无跟踪查询,因为所有跟踪查询都已表现出此行为。 4.4 持久化计算列大多数数据库允许在计算后存储计算列的值。 虽然这占用磁盘空间,但计算列在更新时只计算一次,而不是在每次检索其值时计算。 这还允许对某些数据库的列设置索引。 EF Core 5.0 允许将计算列配置为存储列。 例如: modelBuilder .Entity<User>() .Property(e => e.SomethingComputed) .HasComputedColumnsql(my sql",stored: true); 4.5 sqlite计算列EF Core 现在支持 sqlite 数据库的计算列。 5 有用的短链接提供了以下短链接,便于参考和访问。
原文链接https://devblogs.microsoft.com/dotnet/announcing-entity-framework-core-5-0-preview-5/?utm_source=vs_developer_news&utm_medium=referral (编辑:北几岛) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |