我有以下抽象类:
public abstract class Entity<TKey> { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public TKey Id { get; set; } }
我想用这个类作为我所有实体框架实体类的基类。
一切都很好,但我有一个警告,我想压制。
我启用了可为空的引用类型,并收到以下警告:
警告CS8618 退出构造函数时,不可为null的属性“Id”必须包含非null值。考虑将属性声明为可空的。
对于出现此警告的其他属性,我已经能够按照建议添加构造函数。但由于这将是数据库中自动生成的值,所以我不能这样做。
我有一些类使用Int作为键,还有一些类使用string,所以我不能在泛型TKey上添加struct约束。
那么我该如何抑制这个警告呢?
要抑制泛型类型的警告,请使用 default! 语法:
default!
public abstract class Entity<TKey> { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public TKey Id { get; set; } = default!; // no more CS8618 }