内容简介:序列化NH映射对象的最佳方法是不对其进行序列化:).如果你通过网络发送它,你应该真的为它创建一个DTO.如果您不想创建该对象,可以在不希望序列化的属性上设置[XmlIgnore].如果你想要所有的属性,你必须从数据库加载它们 – 对于一些急切的加载对于其他人来说已经足够了(其中有太多的连接将开始复制数据)你必须以任何你想要的方式访问该属性触发负载.
返回.它只是序列化对象的NHibernate映射属性……任何人都有一些洞察力?似乎Web方法实际上是序列化NHibernate代理而不是我的类.我尝试过使用[XMLInclude]和[XMLElement],但属性仍然没有序列化.我有一种非常糟糕的hackish方式绕过这个,但我想知道是否有更好的方法!
像这样的东西:
<?xml version="1.0" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="StoryManager" assembly="StoryManager"> <class name="Graphic" table="graphics" lazy="false"> <id name="Id" column="id" type="int" unsaved-value="0" > <generator class="identity"/> </id> <property name="Assigned" /> <property name="Due" /> <property name="Completed" /> <property name="UglyHack" insert="false" update="false" /> <many-to-one name="Parent" class="Story" column="story_id"/> </class> </hibernate-mapping> public class Graphic { private int m_id; public virtual int Id { get { return m_id; } set { m_id = value; } } private DateTime? m_assigned; public virtual DateTime? Assigned { get { return m_assigned; } set { m_assigned = value; } } private DateTime? m_due; public virtual DateTime? Due { get { return m_due; } set { m_due = value; } } private DateTime? m_completed; public virtual DateTime? Completed { get { return m_completed; } set { m_completed = value; } } public bool UglyHack { get { return m_due < m_completed; } // return something besides a real mapped variable set {} // trick NHibernate into thinking it's doing something } }
这显然无法编写代码.如果我没有那里的“假”映射(UglyHack属性),那么该属性将不会被序列化.现在我正在研究使用(数据)传输对象,并可能使用反射…
序列化NH映射对象的最佳方法是不对其进行序列化:).
如果你通过网络发送它,你应该真的为它创建一个DTO.如果您不想创建该对象,可以在不希望序列化的属性上设置[XmlIgnore].
如果你想要所有的属性,你必须从数据库加载它们 – 对于一些急切的加载对于其他人来说已经足够了(其中有太多的连接将开始复制数据)你必须以任何你想要的方式访问该属性触发负载.
编辑:
而且我想补充一点 – 通过网络发送你的域实体总是一个坏主意.在我的情况下,我学到了很难 – 我通过WebService公开了一些实体 – 现在几乎所有的更改(重命名属性,删除属性..etc)到我的域使用WS杀死应用程序 – 加上一大堆属性上有[XmlIgnore](不要忘记循环依赖).
我们很快就会重写 – 但请确保这不是我再做过的事情.
编辑2
您可以使用 AutoMapper 将数据从实体传输到DTO.他们在网站上有一些例子.
翻译自:https://stackoverflow.com/questions/1190718/how-do-i-serialize-all-properties-of-an-nhibernate-mapped-object
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- MyBatis从入门到精通(十一):MyBatis高级结果映射之一对多映射
- MyBatis从入门到精通(九):MyBatis高级结果映射之一对一映射
- 【mybatis xml】数据层框架应用--Mybatis(三)关系映射之一对一关系映射
- Hibernate 关系映射整理
- SpringMVC——请求映射
- Hibernate 关系映射整理
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Python灰帽子
[美] Justin Seitz / 丁赟卿 译、崔孝晨 审校 / 电子工业出版社 / 2011-3 / 39.00元
《Python灰帽子》是由知名安全机构Immunity Inc的资深黑帽Justin Seitz主笔撰写的一本关于编程语言Python如何被广泛应用于黑客与逆向工程领域的书籍。老牌黑客,同时也是Immunity Inc的创始人兼首席技术执行官(CTO)Dave Aitel为这本书担任了技术编辑一职。书中绝大部分篇幅着眼于黑客技术领域中的两大经久不衰的话题:逆向工程与漏洞挖掘,并向读者呈现了几乎每个......一起来看看 《Python灰帽子》 这本书的介绍吧!