文章出處

前言

關于 ASP.NET Core 2.0 的新功能可以查看我的這篇博客。 這篇文章是 Priview2中的一些改進。

.NET Core 2.0 - Preview2

  • Azure 的改進
  • Docker 鏡像轉移到了 Debian Stretch
  • 修復并支持 macOS High Sierra
  • 質量性能的改進
  • dotnet restore 將在 dotnet run,publish,build 的時候被隱式調用
  • .NET Standard 庫可以引用 .NET Framework庫了
  • .NET Standard NuGet 包 nuspec 不再需要添加對于NETStandard.Library依賴關系了

ASP.NET Core 2.0 - Preview2

  • 更新了 Visual Studio 的模板,多了SPA項目的模板。 包括(Angular, React.js, React.js and Redux)等。

  • 添加了在 Visual Studio 2017 中新建 ASP.NET Core 項目使用 .NET Framework框架的模板。

  • Kestrel 添加了一些配置選項,包括(MaxConcurrentConnections,MaxRequestBodySize,RequestBodyMinimumDataRate)等。
  • Razor 支持 C# 7.1。 此項配置可以在csproj中指定<LangVersion>latest</ LangVersion>開啟。
  • 對于MVC Action中FileStreamResult,FileContentResult 的Http頭增加了支持的范圍。 現在可以添加 ETag, LastUpdate等。
  • 新增了兩個關于Razor Page的過濾器(IPageFilter,IAsyncPageFilter)。
  • 關于 Priview 1中的 Identity 相關的服務還有配置HTTPS的被割掉了,他們還需要時間進行打磨,等待以后發布。

Entity Framework Core 2.0 - Preview2

  • 新的 NuGet 包以及工具包(Microsoft.EntityFrameworkCore.Tools.DotNet)
  • FromSql和ExecuteSqlCommand中的字符串插值,他們生成的SQL將會自動參數化。
var city = "London";
var contactTitle = "Sales Representative";

using (var context = CreateContext())
{
    context.Customers
       .FromSql($@"
           SELECT *
           FROM Customers
           WHERE City = {city}
               AND ContactTitle = {contactTitle}")
       .ToArray();
}

生成的SQL:

@p0='London' (Size = 4000)
@p1='Sales Representative' (Size = 4000)

SELECT *
FROM Customers
WHERE City = @p0
    AND ContactTitle = @p1
  • 實體類型自動分割表(完善Priview1中的功能),下面將只會創建一個表。
modelBuilder.Entity<Order>().OwnsOne(
    p => p.OrderDetails,
    cb =>
    {
        cb.OwnsOne(c => c.BillingAddress);
        cb.OwnsOne(c => c.ShippingAddress);
    });

public class Order
{
    public int Id { get; set; }
    public OrderDetails OrderDetails { get; set; }
}

public class OrderDetails
{
    public Address BillingAddress { get; set; }
    public Address ShippingAddress { get; set; }
}

public class Address
{
    public string Street { get; set; }
    public string City { get; set; }
}
  • 數據庫函數映射,你可以在代碼中使用數據庫中定義的函數了,注意返回值只能是單個的(scalar)。
public class BloggingContext : DbContext
{
    [DbFunction]  // 添加這個標記,靜態方法
    public static int PostReadCount(int blogId)
    {
        throw new Exception();
    }
}

將會調用數據庫中定義的PostReadCount函數,函數必須自己手動創建,EF不會自動生成。

var query =
    from p in context.Posts
    where BloggingContext.PostReadCount(p.Id) > 5
    select p;
  • 其他的改進(兼容性,過時api等)

本文地址:http://www.cnblogs.com/savorboard/p/dotnetcore2-feature.html
作者博客:Savorboard
歡迎轉載,請在明顯位置給出出處及鏈接


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()