Я собираю Службу данных WCF для PatientEntities, используя Entity Framework.
Мое решение должно соответствовать следующим требованиям:
- Свойство DateOfBirth объекта Patient хранится в SQL Server в виде строки. Было бы идеально, если бы класс сущностей также не использовал тип "string", а скорее тип DateTime. (Я ожидаю, что это будет возможно, так как мы абстрагируемся от уровня хранения). Где можно создать механизм преобразования, который будет преобразовывать в / из DateTime / строку так, чтобы сущность и SQL Server были синхронизированы? Я не могу изменить структуру слоя хранения, поэтому мне нужно обойти его.
- Службы данных WCF (только для чтения, поэтому нет необходимости сохранять изменения) необходимо использовать, так как клиенты смогут использовать выражения LINQ для использования службы. Они могут генерировать результаты на основе любого конкретного сценария запроса, который им необходим, и не могут быть ограничены одним методом, таким как GetPatient (int ID).
Я пытался использовать DTO, но столкнулся с проблемой отображения ObjectContext в DTO, я не думаю, что это теоретически возможно ... или слишком сложно, если это так.
Я пытался использовать Self Tracking Entities, но им нужны метаданные из файла .edmx, если я прав, и это не позволяет использовать другой тип данных свойства.
Я также хочу добавить настройки в мои методы получения Entity, чтобы свойство "MRN" типа "string" должно было выполнять .Replace ("MR ~", string.Empty) до его возвращения. Я могу добавить это к методам получения, но проблема заключается в том, что Entity Framework перезапишет это при следующем обновлении классов сущностей. Есть ли место, где я могу поставить их?
Должен ли я вместо этого использовать POCO? Как это будет работать с WCF Data Services? Где служба получит метаданные?