Как позволить NHibernate игнорировать дополнительные свойства подкласса моей модели?
class SuperModel { // hot I know
{
public Guid Id { get; private set; }
public string FirstName { get; set; }
}
class SubModel : SuperModel {
public string FavoriteColor { get; set; }
}
Я действительно хочу хранить только SuperModel
данные в моем репозитории и использовать FavoriteColor
в другом месте, но я получаю
No persister for: SubModel
хотя я сохраняю его в своем репозитории как
void Store(SuperModel model) {
using (var session = Session){
session.SaveOrUpdate(model); // <<<< The exception is thrown here
}
}
и где-то еще я использую
void WhatToDo(SubModel model) {
doSomething(model.FavoriteColor);
}
И я использую это как таковое
var model = new SubModel { FirstName = "Miranda", FavoriteColor = "Green" };
modelRepository.Store(model);
someService.WhatToDo(model);
Кто-нибудь знает, как я могу свободно это настроить? Спасибо.
FYI- неявное и явное приведение типов не имеет никакого эффекта.
Изменить
Мои сопоставления такие
class SuperModelMap : ClassMap<SuperModel>
{
public SuperModelMap()
{
WithTable("SuperModels");
Id(x => x.Id);
Map(x => x.FirstName);
}
}
Изменить 2
Я понял / узнал, что могу это сделать, но в моей базе данных у меня должна быть фиктивная таблица, которая была бы просто неэффективной. Это работает, но должен быть способ получше ...
В моей SuperModelMap ...
JoinedSubClass<SubModel>("SubModel", MapSubModel);
private void MapSubModel(JoinedSubClassPart<SubModel> part)
{
// Leave this empty
}
Редактировать 3 Я ближе, но все равно получаю другую ошибку при выборе.
Я пробовал это.
DiscriminateSubClassesOnColumn("Id")
.SubClass<SubModel>(m => { });
InnerException {"Объект с идентификатором: 5586b075-47f1-49c8-871c-9c4d013f7220 не принадлежал к указанному подклассу: SuperUser (Дискриминатор был: '1000')"} System.Exception {NHibernate.WrongClassException}