使用代码首次迁移时会忽略某些属性/枚举

时间:2012-09-28 07:46:09

标签: c# entity-framework ef-code-first ef-migrations

我想将一些属性添加到模型中,但该属性不会对数据库或迁移脚本进行任何更改。

当我添加此内容时:

    public test test1 { get; set; }

    public enum test { asasas, asdasdasd };

我得到一个空的迁移

    public override void Up()
    {
    }

    public override void Down()
    {
    }

但是当我添加:

    public String test1 { get; set; }

    public enum test { asasas, asdasdasd };

我得到了预期的迁移

    public override void Up()
    {
        AddColumn("dbo.SpiderBatches", "test1", c => c.String());
    }

    public override void Down()
    {
        DropColumn("dbo.SpiderBatches", "test1");
    }

因为第二次更改确实进行了正确的迁移,所以我可以假设类/上下文已正确设置并且正在运行。所以错误必须在枚举中。

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

仅在您定位.NET 4.5时支持枚举,4.0不支持枚举

答案 1 :(得分:0)

.net 4.5上面的答案很好,但是如果您需要像我一样支持.net 4.0,那么您可以在模型中包含要表示的枚举属性作为int。

两件事 -

1,按照下面的方法对您的值进行硬编码,以避免在.cs文件中更改其顺序的情况,从而破坏您的参照完整性

public enum MyEnum
{
    FirstProperty = 1,
    AskUser = 2,
    IgnoreLine = 3,
    ImportPrice = 4,
    Undecided = 5
}

2 - 当您保存回数据库时,您需要在保存之前将枚举转换为int,例如

MyEntity.PsuedoEnumProperty = (int)FirstProperty