使用 nHibernate 序列化 DetachedCriteria

2024-04-24

我正在尝试序列化 DetachedCriteria,以便可以将其保存在数据库中并在以后重用相同的条件。当我运行下面的代码时,我得到“NHibernate.Criterion.DetachedCriteria 无法序列化,因为它没有无参数构造函数”。

DetachedCriteria criteria1 = DetachedCriteria.For<SecurityObjectDTO>("so")
    .Add(Expression.Eq("ObjectCode", "1234"));

XmlSerializer s = new XmlSerializer(typeof(DetachedCriteria));
TextWriter writer = new StringWriter();
s.Serialize(writer, criteria1);
writer.Close();

有没有什么好方法来序列化 DetachedCriteria?


我以前也遇到过类似的事情。我的第一个想法是子类化DetachedCriteria所以你可以自己提供一个默认的构造函数。然而,在深入挖掘之后DetachedCriteria类,我认为这行不通。原因是CriteriaImpl类,内部使用DetachedCriteria,也缺少默认构造函数。

查看 XmlSerializer,如果您的对象没有默认构造函数,它看起来不会工作。

然而,我遇到了这篇文章:

如何序列化 NHibernate DetachedCriteria 对象? https://stackoverflow.com/questions/1245985/how-do-i-serialize-an-nhibernate-detachedcriteria-object

基于此,这可能有效(但是我还没有测试过):

// Convert the DetachedCriteria to a byte array
MemoryStream ms = new MemoryStream();
IFormatter formatter = new BinaryFormatter();
formatter.Serialize(ms, detachedCriteria);

// Serialize the byte array
XmlSerializer s = new XmlSerializer(typeof(byte[]));
TextWriter writer = new StringWriter();
s.Serialize(writer, ms.Buffer);
writer.Close();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 nHibernate 序列化 DetachedCriteria 的相关文章

随机推荐