【问题标题】:Change property data type with T4 template when using Entity Framework database first首次使用实体框架数据库时使用 T4 模板更改属性数据类型
【发布时间】:2014-04-11 01:29:39
【问题描述】:

我正在开发一个新项目,但它的数据库已经存在,所以我使用的是 EF 数据库优先方法。

我有一个名为 WorkflowStatus 的属性,它存在于所有表中,它的数据类型是 int,但我需要将其类型映射到 WorkflowStatusEnum 而不是 Int32

所以我修改了 T4 模板以更改生成的属性类型,它可以按我的意愿工作,但现在由于模型上的属性类型与生成的属性不匹配,系统无法正常工作。

我需要知道是否有一种简单的方法可以更改模型上属性的数据类型,以便系统可以正常工作,或者我必须在模型上的所有实体上手动更改它。

【问题讨论】:

    标签: entity-framework entity-framework-6.1


    【解决方案1】:

    创建IWorkflowStatus 接口,其中只有一个属性 - WorkflowStatus

    在 t4 中,将IWorkflowStatus 添加到每个具有WorkflowStatus 属性的实体的签名中,即

    public partial class Order: EntityObject, IWorkflowStatus
    

    接下来为 IWorkflowStatus 创建 ExtentionMethod 以按照您想要的方式使用枚举。

    public static void SetStatus(this IWorkflowStatus entity, WorkflowStatus status)
    public static WorkflowStatus GetStatus(this IWorkflowStatus entity)
    

    这可能是最简单的解决方案。

    另一种是使用 T4 在每个实体中生成一个类型化的属性,但也保留整数属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-25
      • 1970-01-01
      • 2012-12-13
      • 2010-11-21
      • 1970-01-01
      相关资源
      最近更新 更多