使用nHibernate序列化DetachedCriteria
我正在尝试序列化DetachedCriteria,以便我可以将其保存在数据库中,并在以后重用相同的标准。 当我运行下面的代码时,我得到“NHibernate.Criterion.DetachedCriteria无法序列化,因为它没有无参数构造函数”。
DetachedCriteria criteria1 = DetachedCriteria.For("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
类之后,我认为这不会起作用。 原因是DetachedCriteria
内部使用的CriteriaImpl
类也缺少默认构造函数。
查看XmlSerializer,如果您的对象没有默认构造函数,它看起来不会起作用。
然而,我遇到了这篇文章:
如何序列化NHibernate DetachedCriteria对象?
基于此,这可能有用(但我没有测试过):
// 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();