Entity framework 实体框架将FK设置为可空

Entity framework 实体框架将FK设置为可空,entity-framework,code-first,database-migration,Entity Framework,Code First,Database Migration,我在迁移中首先使用代码来构建和保持对数据库的更改同步 如果有一个类Person具有指向类FavoriteColor的属性,则创建的db模式是一个Person表,其FK名为FavoriteColor_Id,不可为空 我需要让那个列允许空值,因为这个人可能有也可能没有最喜欢的颜色 Thx好的,晚上睡个好觉后,我又重新开始工作,几分钟内就解决了这个问题 基本上,所发生的事情是,我希望更改我的模型类,并为我生成一个新的迁移cs文件。由于EF最初为我自动生成了这个FK,所以没有对模型类进行任何更改。然后我

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

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

我需要让那个列允许空值,因为这个人可能有也可能没有最喜欢的颜色


Thx

好的,晚上睡个好觉后,我又重新开始工作,几分钟内就解决了这个问题

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

以下是解决我问题的方法:

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

当使用Fluent API(或使用DataAnnotation装饰类)设置配置时,在添加新迁移时将拾取更改。然后,您所要做的就是调用更新数据库。