У меня есть объект, который я пытаюсь сохранить в устаревшей базе данных с помощью NHibernate. У меня есть все соответствующие столбцы из таблицы, сопоставленной в моем доменном объекте, но есть несколько полей в таблице, которые должны быть заполнены для структуры устаревшей базы данных.
Следуя нескольким рекомендациям, я создал и зарегистрировал перехватчик NHibernate, чтобы сделать это для меня.
public class CustomLineItemInterceptor : EmptyInterceptor
{
public override bool OnSave(object entity, object id, object[] state, string[] propertyNames, IType[] types)
{
var lineItem = entity as SomeCustomLineItem;
if (lineItem == null)
return false;
List<string> propertyNameList = propertyNames.ToList();
List<IType> typeList = types.ToList();
List<object> stateList = state.ToList();
propertyNameList.Add("Source"); // the unmapped column in the database
typeList.Add(NHibernateUtil.String);
stateList.Add("My Application's Name"); // the value I need to persist
state = stateList.ToArray();
propertyNames = propertyNameList.ToArray();
types = typeList.ToArray();
return true;
}
}
Я смотрел на этот NHibernate добавить несопоставленный столбец в перехватчике и Несопоставленный столбцы в NHibernate? , не найдя ответа.
Я вижу, что метод OnSave срабатывает, но я ничего не храню в базе данных (или запросе SQL, сгенерированном NHibernate).
Что я делаю не так?