Я работаю над своим первым проектом NHibernate, и у меня есть следующие настройки / требования.
У меня есть 2 проекта xx.Data и xx.Business.В проекте Data, где находятся мои доменные классы, файлы сопоставления.Я занимаюсь созданием онлайн-приложения, в котором у меня есть таблица SQL, в которой хранится идентификатор, дата изменения и поле XML, в котором хранятся данные формы приложения.Это сопоставлено с классом домена EnrolmentApplication.
XML десериализуется в класс ApplicationForm, который в данный момент находится в проекте xx.Business.Бизнес-проект ссылается на проект Data.
Я начал с создания своего кода, создав новую ApplicationForm, сериализовавшую в xml, затем установив для свойства EnrolmentApplicaiton строку xml и сохранив, что, на мой взгляд, ужасный способчто-то делать.
Затем я подумал, что у меня должно быть свойство в классе EnrolmentApplication, которое имеет свойства get / set для сериализации / десериализации свойства xml для меня, однако мне бы пришлось либо переместить класс ApplicationFormв проект данных или создайте другой класс, который наследуется от EnrolmentApplication, т.е.
using xx.Data;
namespace xx.Business
{
public class EForm : EnrolmentApplication
{
public EForm(Guid applicationID) : base(applicationID)
{}
}
}
Моя проблема с этим заключается в загрузке EnrolmentApplication из базы данных.Я не хочу делать следующее:
EnrolmentApplication form = NHibernateSession.Linq<EnrolmentApplication>().SingleOrDefault(x => x.appID);
this.ApplicationXML = form.ApplicationXML;
this.DateModified = form.DatModified;
...
Я мог бы упростить это, переместив класс ApplicationForm в проект Data, но я бы хотел оставить их отдельно, так как бизнес-класс - это то, где правиладля формы заявления должно действительно проживать.