Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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# 使用EntityObject生成器模板引用外部枚举类型_C#_Entity Framework_Enums_Ef Database First_Entityobject - Fatal编程技术网

C# 使用EntityObject生成器模板引用外部枚举类型

C# 使用EntityObject生成器模板引用外部枚举类型,c#,entity-framework,enums,ef-database-first,entityobject,C#,Entity Framework,Enums,Ef Database First,Entityobject,我有以下枚举: namespace Common { public enum VehicleType { Car=10, Bike=20 } } 我已经在EF designer中创建了一个名为VehicleTypeReferenceing Common.VehicleType的引用枚举类型。edmx位于Models名称空间中,因此我使用了两个不同的枚举: Common.VehicleType Models.VehicleType 要在实

我有以下枚举:

namespace Common
{
    public enum VehicleType
    {
        Car=10,
        Bike=20
    }
}
我已经在EF designer中创建了一个名为
VehicleType
Referenceing Common.VehicleType的引用枚举类型。edmx位于
Models
名称空间中,因此我使用了两个不同的枚举:

Common.VehicleType
Models.VehicleType
要在实体对象实例上设置枚举,我需要强制转换它:

Vehicle vehicle = new Vehicle();
vehicle.VehicleType = (Models.VehicleType)Common.VehicleType.Bike;
这有几个问题:

  • 我需要使用完全限定的名称(枚举的名称必须与我收集的名称相同)
  • 我需要到处投
  • 我将获得一个循环引用,因为
    模型
    命名空间引用
    公共
    公共
    现在需要引用
    模型
    ,以便进行强制转换
  • 这是一个简单的解释。我无法更改引用或生成器模板,因为在一个相当大的项目中,这将导致大量代码更改

    我猜是这一代人把事情搞砸了。有没有办法绕过这个问题

    编辑

    EntityObject模板生成器生成的VehicleType类型为的字段变为:

    private VehicleType _VehicleType;
    

    其中VehicleType是Models。VehicleType

    您看到这个了吗:?最终的问题是你有2个枚举类型,你不需要这个。我通读了。如果我使用EntityObject模板生成器(请参阅更新的问题),我是否正确地假设我必须找到一个不同的解决方案?在不进行黑客攻击的情况下,尝试使它与EntityObject一起工作会有很多困难。这里的问题是,在这种情况下,所有类型都必须具有EF识别的属性。模板生成的枚举类型将具有EdmEnumAttribute,因此这是EF将使用的类型,而另一个类型将被忽略。为什么要使用EntityObject而不是POCO?如果您已准备好进行黑客攻击,您可能会修改T4模板以不生成枚举类型,使用EdmEnumTypeAttribute为您的类型添加属性,并将其从属性中的CSDL重定向到枚举类型修改T4模板听起来非常复杂。我们早在EF4.0是最优秀的时候就开始了这个项目,现在这个项目已经非常庞大了。我曾考虑过迁移到DbContext,但这可能需要2周左右的时间——需要编写大量代码。现在,我将找出一些解决方法,直到有时间转移到DbContext。非常感谢您的投入!事实证明,移动到DbContext比预期的要容易得多。我刚才提到的两个星期,我的屁股被拔了出来。新的领土被征服了\o/