实体框架 - 在执行Add-Migration命令之前从实体中删除属性

时间:2016-05-08 18:10:30

标签: entity-framework ef-migrations

我的实体具有与其他实体相同的属性,但具有不同的验证属性,例如:

public class Person
{
       [Key]
       public Guid Id { get; set; }

       [Required]
       public string Firstname { get; set; }

       [Required]
       public string Lastname { get; set; }
}

没有必需的属性:

public class Person2
{
       [Key]
       public Guid Id { get; set; }

       public string Firstname { get; set; }

       public string Lastname { get; set; }
}

我的策略是编写以下代码:

[EntityWithoutRequiredAttribute]
public class Person2 : Person
{
}

问题是,实体框架迁移会生成一个" nullable:false"表达:

CreateTable(
            "dbo.Person2",
            c => new
                {
                    Id = c.Guid(nullable: false),
                    Firstname = c.String(nullable: false),  // should be nullable
                    Lastname = c.String(nullable: false),   // should be nullable
                })
            .PrimaryKey(t => t.Id);

是否可以从具有自定义属性的实体中删除所有必需属性" EntityWithoutRequiredAttribute"?是否可以编写一个在Add-Migration命令之前运行的注入器?

感谢!!!

1 个答案:

答案 0 :(得分:0)

这不是解决问题的最佳解决方案,但它可能是一种解决方法,或者您可以将其用作最后的解决方案。

您可以按以下方式手动更改迁移

CreateTable(
        "dbo.Person2",
        c => new
            {
                Id = c.Guid(nullable: false),
                Firstname = c.String(nullable: true),  
                Lastname = c.String(nullable: true),   
            })
        .PrimaryKey(t => t.Id);