首页 / 微软技术 / Entity Framework / Entity Framework Core 1.1 Preview 1发布
Entity Framework Core

Entity Framework Core 1.1 Preview 1发布

Entity Framework Core (EF Core) 是一个轻量级的,可扩展,的跨平台Entity Framework. 今天已经发布 Entity Framework Core 1.1 Preview 1 。

Entity Framework Core

更新1.1 Preview 1

如果你使用数据库 providers 是SQL Server, SQLite, and InMemory,那你就需要升级 provider 包。

PM> Update-Package Microsoft.EntityFrameworkCore.Relational -Pre



如果你是使用第三方的数据库provider,你需要检测发布更新中是否有支持1.1.0-preview 1.如果支持你可以更新最新版本,否则

就需要更新EF Core相关组建,当然1.1版本的新功能并不会影响数据库provider。我们已经做过测试1.0和1.1的数据库provider是完全兼容,但并不是100%的工具都测试过。
PM> Update-Package Microsoft.EntityFrameworkCore.Relational -Pre



更新工具包

 

如果使用工具包,也需要更新,注意工具包的版本是1.0.0-preview3-final,因为工具已经工具包访问.NET Core, ASP.NET Core, 和EF Core之间需要兼容,而现在并不是很稳定。


PM> Update-Package Microsoft.EntityFrameworkCore.Tools -Pre





如果你使用
 ASP.NET Core, 你需要工具包的Microsoft.EntityFrameworkCore.Tools.DotNet. 因为是相关.NET CLI Tools 编译进程,
而且会将他分离到dotnet ef 工具中.

 


"tools": {
  "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0-preview3-final"
},

What’s in 1.1 Preview 1

1.1 release 已经发布 EF Core. 包括修复bug和添加一些新功能,此版本主要EF Core提供大家选择,还有好的建议的纳入.更多详细信息可以阅读如下:EF Core and EF6.x comparison.

Improved LINQ translation

这一版本中我们非常好的改进 EF Core LINQ provider. 授权更多高效查询,更好执行在更多类型的数据库(in memory).

DbSet.Find

 

DbSet.Find(…) 是一个 API 已经能在EF Core中使用.允许你更容易的基于主建值查询数据.如果数据已经加载到context中,将不能将查询语句执行数据中.



using (var db = new BloggingContext())
{
    var blog = db.Blogs.Find(1);
}

Mapping to fields

最新的HasField(…) 这个方法将成熟的API,允许你配置返回一个域的属性,最后可以查看这个属性是否设置值.










public class BloggingContext : DbContext
{
    ...

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Blog>()
            .Property(b => b.Url)
            .HasField("_theUrl");
    }
}

还有EF将使用 将会有域使用数据时返回实列中的某一个域, 或当他不能使用这个属性时,说属性没有被设置对应的值。你就能使用新的 UsePropertyAccessMode(…) API进行识别






protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Blog>()
        .Property(b => b.Url)
        .HasField("_theUrl")
        .UsePropertyAccessMode(PropertyAccessMode.Field);
}

您还能创建一个属性在你的模型里面,不需要直接和实体分类进行关联,但使用一个域保存数据在实体里面,这里所定于的属性应该是弱类型属性,数据就会自动改变跟踪。这里特别的是代码必须使用 get/set 值设置值.

你能给 EF 的属性 API命名. 如果没有名字, EF就会自动找到域.









public class BloggingContext : DbContext
{
    ...

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Blog>()
            .Property("_theUrl");
    }
}

你还能选择属性名,然后互动额其他域,这个名字适用于模型被创建时,大部分将会被用于从数据库中映射单个域.





protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Blog>()
        .Property<string>("Url")
        .HasField("_theUrl");
}

You can use the EF.Property(…) method to refer to these properties in a LINQ query.


var blogs = db.Blogs
    .OrderBy(b => EF.Property<string>(b, "Url"))
    .ToList();

明确加载

明确加载允许你加载内容用于每一个Context时都明确调用Load方法

using (var db = new BloggingContext())





{
    var blog = db.Blogs.Find(1);

    db.Entry(blog).Collection(b => b.Posts).Load();
    db.Entry(blog).Reference(b => b.Author).Load();
}

还有EF6.x中的APIs

我们额外推荐源于EF6.x 中的EntityEntry APIs ,包括 Reload(), GetModifiedProperties(), GetDatabaseValues() 等. 这些 APIs 是共同访问 DbContext.Entry(object entity) 方法。

联系的弹性

自动连接的能力能更好的找回数据库连接失败的命令,.发布执行策略,SQL Server (including SQL Azure). 这里执行策略包括 SQL Server provider. 捕获异常类型能够获得链接失败次数和链接失败信息和设置。





protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    optionsBuilder.UseSqlServer(
        "<connection string>",
        options => options.EnableRetryOnFailure());
}

对于其他数据的 providers选择其他的数据库和其他跟踪 策略. 也能自定义自己的异常策略。





protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    optionsBuilder.UseMyProvider(
        "<connection string>",
        options => options.ExecutionStrategy(...));
}

基于表级别的SQL Server memory-optimized

Memory-Optimized Tables  SQL Server的新功能. 你现在详细的表影射实体时候获得更好的内存优化. 当EF Core 正在使用创建一个基于数据库的模型时, (migrations or Database.EnsureCreated), a memory-optimized table 优化这些实体数据。.




protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Blog>()
        .ForSqlServerIsMemoryOptimized();
 }

简化服务替换

In EF Core 1.0 可能需要替换内部服务,但这是非常复杂. 在1.1 我们很简单,用于ReplaceService(…) 就可以配置context.










public class BloggingContext : DbContext
{
    ...

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        ...

        optionsBuilder.ReplaceService<SqlServerTypeMapper, MyCustomSqlServerTypeMapper>();
    }
}

1.1 Preview 1 之后还有什么

发布1.1正式版将会在年末发布,我们没有计划发布更多新功能,我们集中于修复bugs而工作,整个团队努力玉 EF Core 1.2 和 EF6.2 releases.

 



About worksguo

我顶的是太阳,蓝天都在我脚下。我是软件开发者,信息化专家,电子商务专家,金融学者,创业人。长期关注微软技术!

发表评论


x

更多推荐

微软TypeScript 3.0正式发布:引入“项目引用”新概念

Entity Framework Core (EF Core) 是一个轻量级的,可扩展,的跨平台Entity Framework. 今天已经发布 Entity Framework Core 1.1 Preview 1 。发布1.1正式版将会在年末发布,我们没有计划发布更多新功能,我们集中于修复bugs而工作,整个团队努力玉 EF Core 1.2 和 EF6.2 releases.

微软Surface高精准无线鼠标在中国发售 售价788元

Entity Framework Core (EF Core) 是一个轻量级的,可扩展,的跨平台Entity Framework. 今天已经发布 Entity Framework Core 1.1 Preview 1 。发布1.1正式版将会在年末发布,我们没有计划发布更多新功能,我们集中于修复bugs而工作,整个团队努力玉 EF Core 1.2 和 EF6.2 releases.

微软今天正式推出Xbox自适应手柄

Entity Framework Core (EF Core) 是一个轻量级的,可扩展,的跨平台Entity Framework. 今天已经发布 Entity Framework Core 1.1 Preview 1 。发布1.1正式版将会在年末发布,我们没有计划发布更多新功能,我们集中于修复bugs而工作,整个团队努力玉 EF Core 1.2 和 EF6.2 releases.

powered by RelatedPosts