Tôi có một số phương thức web trả về các đối tượng của tôi trở lại dưới dạng XML được tuần tự hóa. Nó chỉ là tuần tự hóa các thuộc tính ánh xạ NHibernate của đối tượng ... bất cứ ai có một số cái nhìn sâu sắc? Có vẻ như các phương pháp web thực sự đang tuần tự hóa các proxy NHibernate thay vì các lớp của tôi. Tôi đã thử sử dụng [XMLInclude] và [XMLElement], nhưng các thuộc tính vẫn không được tuần tự hóa. Tôi có một cách hackish thực sự khủng khiếp của việc này, nhưng tôi tự hỏi nếu có một cách tốt hơn!Làm cách nào để tuần tự hóa tất cả các thuộc tính của đối tượng được ánh xạ NHibernate?
Something như thế này:
<?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
}
}
Điều này rõ ràng là không có cách nào để viết mã. Nếu tôi không có bản đồ "giả" trong đó (thuộc tính UglyHack), thuộc tính đó sẽ không được đăng. Hiện tại, tôi đang xem xét sử dụng các đối tượng chuyển dữ liệu (Data), và có thể sử dụng một cái gì đó bằng cách phản chiếu ...
Vui lòng đăng một ví dụ nhỏ. –