0

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

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

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

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

4

1 回答 1

0

创建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 在每个实体中生成一个类型化的属性,但也保留整数属性。

于 2014-04-10T17:29:39.010 回答