2012-05-01 7 views
0

Я перехожу от Fluent to Loquacious, и я столкнулся с проблемой, когда мои перехватчики не получают все поля, как я думаю, они должны. Если я смотрю на OnSave функцииПерехватчики Nhibernate не собирают свойства базового класса

public override Boolean OnSave(Object entity, Object id, Object[] state, 
     String[] propertyNames, IType[] types) 

и принять взгляд на propertyNames только элементы, там есть элементы, которые были явно отображены в файле отображения (в данном примере это будет просто ID, Старт, и Конец).

В моем случае, хотя у меня есть базовый класс, который не отображается вообще. Вместо этого он просто содержит свойства, которые заполняются перехватчиками. Это использовалось для работы в Fluent Nhibernate, но теперь, когда я переехал в Nhibernate 3.3, я больше не могу работать.

Мои классы/картографирование выглядеть примерно так

public class BaseAuditEntity 
{ 
    public virtual int ModifiedByUserID { get; set; } 
    public virtual DateTime LastModifiedTime { get; set; } 
} 

public class Foo : BaseAuditEntity 
{ 
    public virtual int ID { get; protected internal set; } 
    public virtual DateTime Start { get; protected internal set; } 
    public virtual DateTime End { get; protected internal set; } 
} 

public class FooMap: ClassMapping<Foo> 
{ 
    Id(x => x.ID, m => m.column("fooID")); 
    Property(x => x.Start, m => m.column("start")); 
    Property(x => x.End, m => m.column("end")); 
} 

Любые идеи о том, как получить эту работу? Я не хочу отображать это в каждом классе, и я не думал, что мне нужно отобразить BaseAuditEntity, по крайней мере, с Fluent он не нужен.

+0

вы использовали Автоотображение с FNH? – Firo

ответ

0

вы могли бы сделать базовый класс отображение

public class BaseAuditEntityMapping<T> : ClassMapping<T> where T: BaseAuditEntity 
{ 
    ManyToOne(x => x.ModifiedByUser); 
    Property(x => x.LastModifiedTime); 
} 

public class FooMap: BaseAuditEntityMapping<Foo> 
+0

Это работало, хотя это не совсем то, что я хотел, я надеялся, что не изменит все сопоставления, чтобы указать на BaseAuditEntityMapping, но при этом это работает. Благодарю. – Zipper

+0

FNH не будет отображать их самостоятельно, за исключением того, что вы используете автоматизацию. вы можете использовать сопоставление по эквиваленту кода для автопилота, чтобы получить тот же эффект – Firo

Смежные вопросы