Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用代码优先迁移时,会忽略某些属性/枚举_C#_Entity Framework_Ef Code First_Entity Framework Migrations - Fatal编程技术网

C# 使用代码优先迁移时,会忽略某些属性/枚举

C# 使用代码优先迁移时,会忽略某些属性/枚举,c#,entity-framework,ef-code-first,entity-framework-migrations,C#,Entity Framework,Ef Code First,Entity Framework Migrations,我想向模型的实体添加一些属性,但该属性不会在数据库或迁移脚本中进行任何更改 当我添加以下内容时: public test test1 { get; set; } public enum test { asasas, asdasdasd }; 我得到一个空的迁移 public override void Up() { } public override void Down() { } public override v

我想向模型的实体添加一些属性,但该属性不会在数据库或迁移脚本中进行任何更改

当我添加以下内容时:

    public test test1 { get; set; }

    public enum test { asasas, asdasdasd };
我得到一个空的迁移

    public override void Up()
    {
    }

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

    public override void Down()
    {
        DropColumn("dbo.SpiderBatches", "test1");
    }
但当我补充说:

    public String test1 { get; set; }

    public enum test { asasas, asdasdasd };
我得到了预期的迁移

    public override void Up()
    {
    }

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

    public override void Down()
    {
        DropColumn("dbo.SpiderBatches", "test1");
    }
因为第二个更改确实进行了正确的迁移,所以我可以假设类/上下文已正确设置并且正在工作。因此,错误必须在枚举中


有人能进一步帮助我吗?

枚举仅在您以.NET 4.5为目标时受支持,它不支持4.0

枚举仅在您以.NET 4.5为目标时受支持,它不支持4.0

以上对.NET 4.5的回答很好,但如果您需要像我一样支持.NET 4.0,然后可以将要在模型上表示为int的enum属性包括在内

有两件事-

1、按照以下要求硬编码值,以避免.cs文件中的值顺序发生更改,从而破坏引用完整性

public enum MyEnum
{
    FirstProperty = 1,
    AskUser = 2,
    IgnoreLine = 3,
    ImportPrice = 4,
    Undecided = 5
}
2-当您保存回数据库时,您需要在保存前将枚举强制转换为int,例如

MyEntity.PsuedoEnumProperty = (int)FirstProperty

以上对于.net 4.5的回答很好,但是如果您需要像我一样支持.net 4.0,那么您可以将要在模型上表示为int的enum属性包括在内

有两件事-

1、按照以下要求硬编码值,以避免.cs文件中的值顺序发生更改,从而破坏引用完整性

public enum MyEnum
{
    FirstProperty = 1,
    AskUser = 2,
    IgnoreLine = 3,
    ImportPrice = 4,
    Undecided = 5
}
2-当您保存回数据库时,您需要在保存前将枚举强制转换为int,例如

MyEntity.PsuedoEnumProperty = (int)FirstProperty

谢谢你的快速反应,我会试试的谢谢你的快速反应,我会试试的