【发布时间】:2012-12-07 13:59:25
【问题描述】:
我在很长一段时间内都遇到了 NHibernate 的问题,我通过非最佳方式/解决方法解决了这个问题。
首先,我使用 WCF REST 与我的客户端应用程序进行通信。如您所知,序列化持久化实体并不是最佳实践,而且总是会导致其他问题。因此,我总是使用 NHibernates Transformers 将我的实体映射到 DTO。问题是我有更复杂的实体,使用 Transformer 来转换它们。
如何使用转换器或任何其他休眠功能将子实体映射到子 dto?
注意:我不想使用像 Automapper 这样的第三方。
这些是我要映射的实体和 DTO。变量名完全相同。
实体类:
实体类型
public class crmEntityType : EntityModel<crmEntityType>
{
public crmEntityType()
{
Association = new List<crmEntityType>();
Fields = new List<crmCustomField>();
}
public virtual int ID { get; set; }
public virtual string Title { get; set; }
public virtual ICollection<crmEntityType> Associations { get; set; }
public virtual ICollection<crmCustomField> Fields { get; set; }
}
自定义字段
public class crmCustomField : EntityModel<crmCustomField>
{
public virtual int ID { get; set; }
public virtual string Name { get; set; }
public virtual crmEntityType EntityType { get; set; }
}
DTO
EntityTypeDTO
[DataContract]
public class EntityTypeDTO
{
[DataMember]
public int ID { get; set; }
[DataMember]
public string Title { get; set; }
[DataMember]
public IList<CustomFieldDTO> Fields { get; set; }
[DataMember]
public int[] Associations { get; set; }
}
CustomFieldDTO
[DataContract]
public class CustomFieldDTO
{
[DataMember]
public int ID { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public int EntityType { get; set; }
[DataMember]
public int FieldType { get; set; }
}
【问题讨论】:
-
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
-
好的,抱歉,感谢您的纠正。 :)
标签: wcf hibernate nhibernate serialization dto