Использование «FOR XML» с сериализацией XML с типом DATETIME
-
22-09-2019 - |
Вопрос
У меня возникли проблемы с попыткой добавить некоторые даты в уже существующий класс, который загружается через сериализацию XML, и он не делает того, что, как я думал, он должен делать.
Я провел базовый тест с помощью SQL (где EconomicFrom и эффективныхTo объявлены как DATETIME
)
SELECT o.EffectiveFrom AS [@EffectiveFrom],
o.EffectiveTo AS [@EffectiveTo],
FROM dbo.MyObject o
FOR XML PATH('MyObject'), ROOT('ArrayOfMyObject'), type
Что дает XML:
<ArrayOfMyObject>
<MyObject EffectiveFrom="1977-11-23T00:00:00" EffectiveTo="2050-01-01T00:00:00" />
</ArrayOfMyObject>
Затем я объявил класс как:
public class MyObject
{
[XmlAttribute("EffectiveFrom")]
public DateTime EffectiveFrom { get; set; }
[XmlAttribute("EffectiveTo")]
public DateTime EffectiveTo { get; set; }
}
Однако свойства не задаются.Возможно, у меня просто «тяжелый день» и я упускаю из виду ослепляющую очевидность, но я ожидал, что это «просто сработает» - есть идеи, почему это не так?
Действительно ли мне придется создавать некоторые строковые свойства, которые вызывают Date.ParseExact()
на съемочной площадке и ToString()
при получении, отмечая это для сериализации XML и отмечая реальные свойства как XmlIgnore()
?
Решение 2
Похоже, что «просто работает» с SQL Server 2008, тогда как до этого мы использовали SQL Server 2005.
Другие советы
Я не вижу закрывающего тега для <MyObject>?