У меня есть простое веб-приложение ASP.NET MVC, которое использует NHibernate с функцией автоматического сопоставления FluentNHibernate для доступа к данным.Я столкнулся со сценарием, в котором я хотел бы, чтобы NHibernate сохранил некоторые классы в виде двоичных данных.
Например, у меня есть нечто похожее на это:
public class User
{
...
// This field will be persisted
public virtual byte[] PortraitData { get; set; }
// This method will get me what I'm actually interested in
public virtual Image GetPortrait()
{
return SerializationHelper.Deserialize<Image>(PortraitData);
}
}
(я оставляюреализация класса SerializationHelper
для воображения читателя. Он не делает ничего сложного, просто сериализует и десериализует данные в байтовые массивы и обратно.)
Я хотел бы изменить приведенный выше кодна это:
public class User
{
...
public virtual Image Portrait { get; set; }
}
Так что в основном я хочу сказать (свободно) NHibernate, что он должен сохранять некоторые классы (указанные мной), сериализовав их в двоичное поле с именем фактического свойства.
(В вышеупомянутом случае я хотел бы, чтобы он сериализовал Image
в поле varbinary
, называемое Portrait
.)
Реальный сценарий, который я имею, немного сложнее, чем этот, но этоПример очень хорошо демонстрирует, чего я хочу достичь.(Значение: класс System.Drawing.Image
- не единственный, который меня интересует в сериализации.)
Я знаю, что в Fluent или NHibernate должна быть какая-то конфигурация, которая позволяет делать именно это, ноЯ не мог понять это.Подскажите, пожалуйста, как это сделать?
Заранее спасибо за помощь!