【问题标题】:Entity Framework setting FK to nullable实体框架将 FK 设置为可为空
【发布时间】:2013-11-11 21:58:06
【问题描述】:

我首先使用代码和迁移来构建和保持对数据库的更改同步。

如果有一个类 Person 具有指向类 FavoriteColor 的属性,则创建的 db 模式是一个 Person 表,其中包含一个名为 FavoriteColor_Id 的 FK,该 FK 不可为空。

我需要让该列允许空值,因为 Person 可能有也可能没有最喜欢的颜色。

谢谢

【问题讨论】:

    标签: entity-framework code-first database-migration


    【解决方案1】:

    好吧,我又睡了个好觉,我重新开始工作,并能够在几分钟内解决这个问题。

    基本上发生的事情是我期望我会更改我的模型类,并且会为我生成一个不错的新迁移 cs 文件。由于 EF 最初为我自动生成了这个 FK,因此对模型类没有任何更改。然后我意识到我仍然可以从包管理器控制台运行 add-migration ,它会为我创建一个新文件,我可以在其中添加自己的代码。我还需要了解 Up() 和 Down() 方法之间的区别。有时,当一切都是为您自动生成时,您会认为这些事情是理所当然的。

    这是解决我的问题的方法:

    public override void Up()
    {
        AlterColumn("dbo.Person", "FavoriteColor_Id", c => c.Int(nullable: true));
    }
    

    【讨论】:

    • 使用 Fluent API(或使用 DataAnnotations 装饰类)设置配置时,将在添加新迁移时获取更改。那么你所要做的就是调用update-database。
    猜你喜欢
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2015-06-21
    • 2011-05-07
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    相关资源
    最近更新 更多