我有一个汽车历史数据库。每个汽车历史都有多个与之关联的图像。我正在使用 NHibernate 2.2 来设置关系,并且 CarHistory 映射包含一个图像包:
<bag name="Photos" table="DetailPhoto" cascade="all" lazy="true">
<key column="CAR_DETAIL_ID"/>
<one-to-many class="DetailPhoto"/>
</bag>
我有一个 iPad 应用程序,它使用 JSON 与服务器通信。我想将所有汽车历史记录项加载到 iPad 上的列表中,并且我不想在加载列表时包含照片,因为它会减慢数据检索速度,这就是我让照片变得懒惰的原因。
当我尝试使用 JsonConvert.SerializeObject 序列化我的汽车历史列表时,我得到一个延迟初始化异常,这是因为我已经加载了我的对象并关闭了会话,因为我不需要照片并且 JsonSerializer 正在触及所有对象上的属性。
我想在没有照片的情况下将 Json 数据返回给客户端,但我不能在我的对象上使用忽略 JsonProperty,因为我想在其他情况下加载此集合。
我已经尝试过了,但它只是做了同样的事情给了我延迟初始化异常: http ://www.royjacobs.org/2011/07/27/using-json-net-to-serialize-proxied-nhibernate-objects/
这是我的 CarHistory (CarDetail) 课程
public class CarDetail
{
[JsonProperty("id")]
public virtual int Id { get; set; }
[JsonProperty("carId")]
public virtual int CarId { get; set; }
[JsonProperty("date")]
public virtual DateTime ? Date { get; set; }
[JsonProperty("details")]
public virtual string Details { get; set; }
[JsonProperty("photos")]
public virtual IList<DetailPhoto> Photos { get; set; }
}
所以我的问题是如何在某些情况下而不是其他情况下检索没有关联照片的 CarHistories 列表?