我想将一些属性添加到模型中,但该属性不会对数据库或迁移脚本进行任何更改。
当我添加此内容时:
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");
}
因为第二次更改确实进行了正确的迁移,所以我可以假设类/上下文已正确设置并且正在运行。所以错误必须在枚举中。
任何人都可以帮助我吗?
答案 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