NHibernate DateTimeOffsetType代理源?
我有一个现有的应用程序,它使用NHibernate从一个运行了相当长时间的数据库(SQLServer2008R2)加载一些相当复杂的对象 今天,我在尝试使用JSON.Net序列化对象时遇到以下错误:NHibernate DateTimeOffsetType代理源?,nhibernate,datetime,json.net,offset,Nhibernate,Datetime,Json.net,Offset,我有一个现有的应用程序,它使用NHibernate从一个运行了相当长时间的数据库(SQLServer2008R2)加载一些相当复杂的对象 今天,我在尝试使用JSON.Net序列化对象时遇到以下错误: Error getting value from 'DefaultValue' on 'NHibernate.Type.DateTimeOffsetType'. 我的NHibernate映射中没有一个属性使用DateTimeOffsetType,因此我怀疑NHibernate以某种方式代理了我对象
Error getting value from 'DefaultValue' on 'NHibernate.Type.DateTimeOffsetType'.
我的NHibernate映射中没有一个属性使用DateTimeOffsetType,因此我怀疑NHibernate以某种方式代理了我对象的属性
我在我的对象上有几个可为空的DateTime值,但在我当前的版本中没有什么新内容
我应该在哪里找到NHibernate尝试使用该类型的属性
我还会错过什么?尝试使用以下代码序列化时出错:
var converter = new IsoDateTimeConverter();
x.Json = JsonConvert.SerializeObject(myObject, converter);
同样,该代码已经存在了相当长的一段时间,这只是一个新问题。要了解哪些属性的类型为datetimeoffset
var propertiesWithDateTimeOffset = nhConfiguration.ClassMappings
.SelectMany(c => c.PropertyClosureIterator)
.Where(p => p.Type is DateTimeOffsetType)
.Select(p => p.PersistentClass.ClassName + "." + p.Name);
注意:代码还没有处理组件,但是可以很容易地添加可能不是您一直在寻找的解决方案,但仍然是一个解决方案-我遇到了类似的情况。 在我的例子中,我忘记了从web api调用返回DTO,而默认的json serialiser就是这样做的 现在,我将我的数据对象映射到一个DTO对象,该对象具有数据协定属性,并将其序列化。 因为我的DTO很简单,并且没有得到NHibernate代理,所以这个错误似乎不再发生 否则,我已经为其他可空日期执行了此操作,我希望对序列化进行更多控制。为它定义一个自定义转换器,并按照您的意愿执行,但对于此Nhibernate类型。 尽管如此,我还是不想序列化(或尝试)这些代理类型