EntityFramework: доступ к столбцу базы данных с использованием пользовательского типа - PullRequest
0 голосов
/ 14 июня 2010

Я «унаследовал» старую базу данных, где даты хранятся в виде значений Int32 (тоже раз, но для этого примера достаточно дат), то есть 20090101 для 1 января 2009 года. Я не могу изменить схему этой базы данных, потому что она все ещедоступ к старым программам.
Однако я хочу написать новую программу, используя EF в качестве O / RM.
Теперь я хотел бы иметь DateTime-Values ​​в моей модели.

Есть ли способ написать собственный тип и использовать его как тип в EF-модели.

Что-то типа Type "OldDate"
со свойствами:
DatabaseValue: Int23
Значение: DateTime (указание части даты, тогда как время всегда равно 0:00:00)

Возможно ли что-то подобное с EF-моделью?

Редактировать:
Я думаю, что нашел то, что искал - но в NHibernate, поэтому я перефразирую:
Возможно ли что-то вроде NHIbernates IUserType с EF?

1 Ответ

0 голосов
/ 23 июня 2010

A ComlexType может справиться с этим.Я создал тип LeagcyDate, в котором значение int хранится в свойстве DbData, и добавил неявное преобразование в и из даты.Этот подход кажется достаточно управляемым.Поскольку EF4 ComplexTypes поддерживаются в Model-Designer, добавление одного из них больше не вызывает вмешательство в edmx.

Неявное преобразование, которое я сделал в частичном классе, выглядит так:

...