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;
这有几个问题:
模型
命名空间引用公共
和公共
现在需要引用模型
,以便进行强制转换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/