关键词:
【中文标题】不可为空的属性必须包含关于 EF 关系的非空值警告【英文标题】:Non-nullable property must contain a non-null value warning on EF relationships 【发布时间】:2022-01-07 02:26:11 【问题描述】:C# 编译器向我显示Non-nullable property must contain a non-null value
on:
relationships
DbSet
根据本文档:Working with Nullable Reference Types 我可以使用以下方法消除DbSet
的警告:
public class DataContext : DbContext
public DataContext(DbContextOptions options) : base(options)
public DbSet<Customer> Customers => Set<Customer>();
public DbSet<Order> Orders => Set<Order>();
对于 EF relationships
以及以下示例,消除此警告的最佳方法是什么(不使用 #pragma warning disable CS8618
)?
public class Customer
public Guid CustomerId get; set; = Guid.NewGuid();
public string Username get; set;
public virtual IEnumerable<Order> Orders get; set;
public Customer(string username)
// still gets warning for `Orders`
Username = username;
在关系的另一边:
public class Order
public Guid OrderId get; set; = Guid.NewGuid();
public string Description get; set;
public Guid CustomerId get; set;
public virtual Job Job get; set;
public Log(string description, Guid customerId)
// still gets warning for `Job`
Description = description;
CustomerId = customerId;
【问题讨论】:
你真的使用可为空的引用类型吗? 【参考方案1】:回答我自己的问题我相信这是在 EF relationships
中删除警告的最合适方法:
public class Customer
public Guid CustomerId get; set; = Guid.NewGuid();
public string Username get; set;
public virtual IEnumerable<Order> Orders get; set; = null!;
public Customer(string username)
Username = username;
在关系的另一边:
public class Order
public Guid OrderId get; set; = Guid.NewGuid();
public string Description get; set;
public Guid CustomerId get; set;
public virtual Job Job get; set; = null!;
public Log(string description, Guid customerId)
Description = description;
CustomerId = customerId;
但如果有人有更好的想法,请随时分享。
【讨论】:
是的,我认为最好的方法是要么初始化它们,要么改变你的数据模型,但这样你就不能再使用可空类型了外键约束,带有子对象集合的 EF
...误“操作失败:无法更改关系,因为一个或多个外键属性不可为空。当对关系进行更改时,相关外键属性设置为空值。如果外键不支持空值,则必须定义新的关系,必须为外键属性分配另一个非空值,或者不相关的对象必须删除 查看详情
Kotlin 中的非空值产生空指针异常
...ion【发布时间】:2019-03-3114:32:29【问题描述】:我有一个不可为空的值数组,如下所示:privatevaldogs=ArrayListDog()//replacewith<>它是这样填充的:valdog=Dog()dog.name=“bob”dogs.add(do 查看详情
无法删除用户外部登录
...息:操作失败:无法更改关系,因为一个或多个外键属性不可为空。当对关系进行更改时,相关的外键属性将设置为空值。如果外键不支持空值,则必须定义新关系,必须为外键属性分配另一个非空值,或 查看详情
在实体配置中使用 EF Core HasQueryFilter 将可为空的数据库列映射到不可为空的属性?
...体配置中使用EFCoreHasQueryFilter将可为空的数据库列映射到不可为空的属性?【英文标题】:UsingEFCoreHasQueryFilterinentityconfigurationtomapnullabledbcolumnstonon-nullableproperties?【发布时间】:2021-04-1712:38:50【问题描述】:设置:在MSSQLServer数... 查看详情
为啥我收到警告说必须初始化一个不可为空的字段(当我确定我正在初始化它时)?
】为啥我收到警告说必须初始化一个不可为空的字段(当我确定我正在初始化它时)?【英文标题】:WhyamIgettingwarningthatanon-nullablefieldmustbeinitialised(WhenI\'msureI\'minitialisingit)?为什么我收到警告说必须初始化一个不可为空的字段(... 查看详情
一对多关系,如何匹配非空值
参考技术Aupdate选项。要合并这个方法很简单,加一个update选项就可以了,update的意思是,如果原来的数据集合该数据为空,那么就使用匹配数据集里面的非空数据替换掉的。 查看详情
颤振测试中的非空变量
...我编写我的第一个测试时,我有一个错误说“必须先分配不可为空的局部变量‘mockNumberTriviaRepository’ 查看详情
NetCore 6 - 将空文字或可能的空值转换为不可为空的类型
】NetCore6-将空文字或可能的空值转换为不可为空的类型【英文标题】:NetCore6-Convertingnullliteralorpossiblenullvaluetonon-nullabletype【发布时间】:2021-11-1119:32:05【问题描述】:我将项目更新到NetCore6,但收到警告:Convertingnullliteralorpossibl... 查看详情
EF 随机看到错误的属性类型
】EF随机看到错误的属性类型【英文标题】:EFrandomlyseeswrongpropertytype【发布时间】:2016-05-0220:29:06【问题描述】:我们首先在EF6.1.3和SimpleInjector3.1.0中使用EF代码,并且我们随机收到与此类似的异常:“Location”上的“IsDeleted”属... 查看详情
spark sql 获取列中先前的非空值
...时间】:2020-02-0705:03:55【问题描述】:我只在sparkSQL中不为空时才尝试获取列的前一行值。由于忽略空值不可用,因此替代方法是排名并获得最大值。lag(valignorenulls)over()SELECTid,val,val_partition,MAX(val)over(par 查看详情
可为空的引用类型和构造函数警告
...我使我的实体类具有构造函数,该构造函数接受初始化其不可为空属性所需的所有数据:publicclassMyEntitypublicMyEn 查看详情
根据可以具有值或为空的字段选择组内的行
】根据可以具有值或为空的字段选择组内的行【英文标题】:Selectingrowswithingroupbasedonfieldthatcanhaveavalueorisnull【发布时间】:2012-04-2006:03:12【问题描述】:从下表中为每个IssIDFieldID组,我想选择包含最低ChgGrpID值的行,如果组中存... 查看详情
控制器属性不能包含非标量\/非空值
】控制器属性不能包含非标量\\\\/非空值【英文标题】:Controllerattributescannotcontainnon-scalar\\/non-nullvalues控制器属性不能包含非标量\\/非空值【发布时间】:2017-02-1323:21:06【问题描述】:我想为我的控制器对象提供这样的hinclude.js... 查看详情
oracle的疑问,字段数据为空的时候,检索数据的不同结果
...nvl(AA,chr(0))<>'中国';脚本1执行的结果是:AA字段为空(NULL)的都被过滤不显示,等于‘中国’的也不显示;脚本2执行的结果就正常了,只是过滤了AA为'中国'的记录;现在请高手解释一下为什么会出现这种情况吧... 查看详情
Azure 流分析 - 您可以查询最新的非空值吗?
...05-2719:42:38【问题描述】:我有一个Azure流分析作业,其中包含来自IoT中心的输入数据,并且我正在将此数据发送到PowerBI。数据正在使用pub/sub更新,因此每条消息只更新一个值。因此,我的输入数据看起来像这样(Me 查看详情
必须初始化不可为空的实例字段“taskTitle”
】必须初始化不可为空的实例字段“taskTitle”【英文标题】:Non-nullableinstancefield\'taskTitle\'mustbeinitialized【发布时间】:2021-09-2423:32:48【问题描述】:我是Flutter开发的新手,在我的代码中为什么我会收到此错误(必须初始化不可... 查看详情
Flutter-不可为空的实例字段'questionAnswer','questionText'必须初始化
】Flutter-不可为空的实例字段\\\'questionAnswer\\\',\\\'questionText\\\'必须初始化【英文标题】:Flutter-Non-nullableinstancefield\'questionAnswer\',\'questionText\'mustbeinitializedFlutter-不可为空的实例字段\'questionAnswer\',\'questionText\'必须初始化【发布... 查看详情
不可为空的实例字段 ['controller'] 必须在颤振中初始化
】不可为空的实例字段[\\\'controller\\\']必须在颤振中初始化【英文标题】:Non-nullableinstancefield[\'controller\']mustbeinitializedinflutter不可为空的实例字段[\'controller\']必须在颤振中初始化【发布时间】:2021-11-0810:58:01【问题描述】:美... 查看详情