Измените тип данных свойства с помощью шаблона T4 при первом использовании базы данных Entity Framework

Я работаю над новым проектом, но его база данных уже существует, поэтому я использую первый подход к базе данных EF.

У меня есть свойство с именем WorkflowStatus, которое существует во всех таблицах, и его тип данных — int, но мне нужно сопоставить его тип с WorkflowStatusEnum вместо Int32.

Итак, я изменил шаблон T4, чтобы изменить сгенерированный тип свойства, и он работал так, как я хотел, но теперь система не работает из-за несоответствия между типом свойства в модели и сгенерированным свойством.

Мне нужно знать, есть ли простой способ изменить тип данных свойства в модели, чтобы система могла нормально работать, или мне нужно изменить его вручную для всех объектов в модели.


person Mahdy    schedule 08.03.2014    source источник


Ответы (1)


Создайте интерфейс IWorkflowStatus только с одним свойством — WorkflowStatus.

В t4 добавьте IWorkflowStatus к подписи каждой сущности, имеющей свойство WorkflowStatus, т.е.

public partial class Order: EntityObject, IWorkflowStatus

Затем создайте ExtentionMethod для IWorkflowStatus, чтобы работать с перечислением так, как вы хотите.

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

Это, пожалуй, самое простое решение.

Другой способ — сгенерировать типизированное свойство в каждой сущности с использованием T4, но также оставить целочисленное свойство.

person Andrew    schedule 10.04.2014