A different approach is to hook into the ObjectMaterialized event in the DbContext and set the kind there.
In my DbContext constructor, i do this:
((IObjectContextAdapter)this).ObjectContext.ObjectMaterialized += new ObjectMaterializedEventHandler(ObjectMaterialized);
and then the method looks like this:
private void ObjectMaterialized(object sender, ObjectMaterializedEventArgs e)
{
Person person = e.Entity as Person;
if (person != null) // the entity retrieved was a Person
{
if (person.BirthDate.HasValue)
{
person.BirthDate = DateTime.SpecifyKind(person.BirthDate.Value, DateTimeKind.Utc);
}
person.LastUpdatedDate = DateTime.SpecifyKind(person.LastUpdatedDate, DateTimeKind.Utc);
person.EnteredDate = DateTime.SpecifyKind(person.EnteredDate, DateTimeKind.Utc);
}
}
The downside is that you need to make sure you set it for each property that you care about but at least it gets set at the lowest possible level.