C# EF核心可空引用类型可空基元外键
当我在code first数据库模型类中启用可空引用类型时,EF核心迁移似乎没有正确地尊重我的可空类型 我注意到,当我启用可为null的引用类型时,我的外键被设置为不可为null,即使我将它标记为可为nullC# EF核心可空引用类型可空基元外键,c#,entity-framework-core,.net-5,ef-core-5.0,C#,Entity Framework Core,.net 5,Ef Core 5.0,当我在code first数据库模型类中启用可空引用类型时,EF核心迁移似乎没有正确地尊重我的可空类型 我注意到,当我启用可为null的引用类型时,我的外键被设置为不可为null,即使我将它标记为可为null [列(“我的外键”)] 公众长?MyFK{get;set;} 迁移生成类型为bigint的不可空列 问题:当我为该型号设置了#可空时,如何使此列可空 初始迁移脚本 这些是创建表的迁移脚本的不同之处。一个示例是启用了可空引用类型,另一个示例是禁用了可空引用类型 禁用可为空的引用类型 这是在
[列(“我的外键”)]
公众长?MyFK{get;set;}
迁移生成类型为bigint
的不可空列
问题:当我为该型号设置了#可空
时,如何使此列可空
初始迁移脚本
这些是创建表的迁移脚本的不同之处。一个示例是启用了可空引用类型,另一个示例是禁用了可空引用类型
禁用可为空的引用类型
这是在禁用可空引用类型时创建列MY\u FOREIGN\u KEY
的语句
MY_FOREIGN_KEY=table.Column(类型:“bigint”,可空:true),
当我关闭可为null的引用类型时,我将对此列进行以下迁移:
migrationBuilder.AlterColumn(
名称:“我的外键”,
表格:“mytable”,
键入:“bigint”,
可为空:是的,
oldClrType:typeof(长),
老字型:“bigint”);
启用了可为空的引用类型
这是migrations脚本中的语句,在启用可空引用类型时创建列MY\u FOREIGN\u KEY
MY_FOREIGN_KEY=table.Column(类型:“bigint”,可空:false),
我已经解决了这个问题,在数据库上下文中将我的外键
声明为可空。可空值类型不受NRT启用/禁用的影响。但是参考导航属性是,并且它们比FK属性具有更高的优先级。因此,这里很可能没有显示与MyFK
相关联的public myanotherity MyFK实体{get;set;}
。启用NRT后,您应该将其更改为NRTpublic MyAnotherEntity代码>。