我正在尝试生成一个可以为空的外键 - 所以在加载类时关系是存在的,但如果依赖对象被删除,它应该返回null。想象一个论坛帖子,其中附有User对象,但如果用户删除了他们的帐户,那么我希望论坛帖子仍然存在于DB中并为用户返回null。
我的流利如下
modelBuilder.Entity<DbForumPost>()
.HasOptional(b => b.User)
.WithMany()
.HasForeignKey(b => b.UserId)
.WillCascadeOnDelete(false);
我的EF对象类如下
[Table("ForumPost")]
public class DbForumPost {
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long Id { get; set; }
public int? UserId { get; set; }
public virtual DbUser User { get; set; }
// rest omitted for brevity
}
现在从我读过的所有内容中,将UserId字段声明为int?并在Fluent中映射为&#34; HasOptional&#34;,这应该给我一个数据库列&#34; UserId&#34;与User表的外键关系,但UserId列应该可以为空。但是,在SQL查询管理器中检查模式时,该列实际上不可为空,我收到错误。
我错过了什么?