C# null許容参照型を有効にした場合のEF Core DbSet<T>の書き方
はじめに
C# 8 から導入されたnull参照許容型ですが、VS2022で新しいプロジェクトを作成するとデフォルトで有効になるようです(私の環境では)。
そこで、既存プロジェクトを参考にEntityFrameworkCoreのDbContextを作っていたところ、少々引っかかったところがあったので備忘録として残しておきます。
現象
いつものようにDbContext
にDbSet<T>
を記載していたのですが……
public class MyDbContext : DbContext
{
public DbSet<User> Users {get; set;}
}
ここで Users
には破線が表示され、以下の警告が表示されます。
CS8618 null 非許容のフィールドには、コンストラクターの終了時に null 以外の値が入っていなければなりません。Null 許容として宣言することをご検討ください。
とは言っても、ここに値をセットするのは自分じゃあないし……。と思いつつ、当初は以下のようにnull
許容して対応していました。
public DbSet<User>? Users {get; set;}
でもこれでは参照する側でnull
を考慮した記述をしなきゃならず、ちょっとモヤる感じに。
解決
公式にちゃんと書いてありました
Null 許容参照型の使用 - DbContext と DbSet
以下のように記載しましょう、とのことです。
public class MyDbContext : DbContext
{
public DbSet<User> Users => Set<User>();
}
これでちゃんと警告なく動くようになりました。以上、万々歳。
Author And Source
この問題について(C# null許容参照型を有効にした場合のEF Core DbSet<T>の書き方), 我々は、より多くの情報をここで見つけました https://qiita.com/yohskeey/items/6e9e5d1f140558d37c99著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .