Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NHibernate DateTimeOffsetType代理源?_Nhibernate_Datetime_Json.net_Offset - Fatal编程技术网

NHibernate DateTimeOffsetType代理源?

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以某种方式代理了我对象

我有一个现有的应用程序,它使用NHibernate从一个运行了相当长时间的数据库(SQLServer2008R2)加载一些相当复杂的对象

今天,我在尝试使用JSON.Net序列化对象时遇到以下错误:

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类型。 尽管如此,我还是不想序列化(或尝试)这些代理类型