Как разрешить 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);
Кто-нибудь знает, как я могу свободно настроить это? Благодаря.
К вашему сведению - неявное и явное приведение не действует.
Редактировать
Мои сопоставления такие
class SuperModelMap : ClassMap<SuperModel>
{
public SuperModelMap()
{
WithTable("SuperModels");
Id(x => x.Id);
Map(x => x.FirstName);
}
}
Редактировать 2
Я понял / обнаружил, что могу это сделать, но в моей базе данных мне нужна фиктивная таблица, которая была бы просто неэффективной. Это работает, но должен быть лучший способ ...
В моей супермодельной карте ...
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}