11. 【2.2 → 3.1】【必須】Raw SQL実行のメソッド変更
FromSql()からFromSqlRaw()に変更されました。
これにより、WhereやOrderByをLINQで書くことが可能になりました。
var query = this.context.SearchedBooks
.FromSqlRaw("SELECT b.id AS "BookId", b.language_id AS "LanguageId", b.name AS
"BookName", a.name AS "AuthorName" FROM book b INNER JOIN author AS a ON b.author_id =
a.id");
if(string.IsNullOrEmpty(criteria.Name) == false)
{
query = query.Where(b => b.BookName.Contains(criteria.Name));
}
return await query
.OrderBy(b => b.BookId)
.ToListAsync();
13. 【2.2 → 3.1】Nullable Reference Type
C# 8の機能としてNullable Reference Typeが追加されました。
EF Coreでも使用可能ですが、DBのテーブルのNot Null設定と紐づけられるので
注意は必要です。
Working with Nullable Reference Types – Microsoft Docs
https://docs.microsoft.com/en-us/ef/core/miscellaneous/nullable-reference-types
14. 【2.2 → 3.1】Transaction、Commit、Rollback
Transactionを {} で囲まなくてもよくなりました。
また非同期版の Commit 、Rollback が追加されました。
using var transaction = await this.context.Database.BeginTransactionAsync();
try
{
var author = await this.authors.GetOrCreateAsync("sample author");
await this.books.CreateAsync(author, new Book
{
Name = bookName,
LanguageId = LanguageData.GetEnglish().Id,
});
await transaction.CommitAsync();
}
catch(NpgsqlException ex)
{
await transaction.RollbackAsync();
}
17. 【3.1 → 5.0】record、init only setter property
初期化時のみ値を変更可能にする record と init only setter property。
EF Coreのモデルクラスにも使用可能なので、
使えるところにはガンガン使っていくスタイルで登場させています。
18. 【3.1 → 5.0】その他
.NET Core から .NET へ
.NET Framework の統合
Windows Runtime API がWPF、WinFormsから使いやすくなった
23. 【5.0 → 6.0】ImplicitUsings
有効にすることで using System; などを書かなくてもよくなりました。
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
using Microsoft.EntityFrameworkCore;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Linq;
不要