Comment puis-je laisser NHibernate ignorer les propriétés supplémentaires d'une sous-classe de mon modèle?Pas de persister pour ... {SUBCLASS} NHibernate avec NHibernate fluide
class SuperModel { // hot I know
{
public Guid Id { get; private set; }
public string FirstName { get; set; }
}
class SubModel : SuperModel {
public string FavoriteColor { get; set; }
}
Je veux vraiment que pour stocker les données SuperModel
utilisant mon référentiel et le FavoriteColor
ailleurs, mais je reçois
No persister for: SubModel
même si je l'enregistrer avec mon dépôt comme
void Store(SuperModel model) {
using (var session = Session){
session.SaveOrUpdate(model); // <<<< The exception is thrown here
}
}
et d'autres où j'utilise
void WhatToDo(SubModel model) {
doSomething(model.FavoriteColor);
}
Et je l'utilise en tant que telle
var model = new SubModel { FirstName = "Miranda", FavoriteColor = "Green" };
modelRepository.Store(model);
someService.WhatToDo(model);
Quelqu'un sait comment je peux couramment configurer cela? Merci.
FYI- le moulage implicite et explicite n'a aucun effet.
Modifier
Mes correspondances sont comme ça
class SuperModelMap : ClassMap<SuperModel>
{
public SuperModelMap()
{
WithTable("SuperModels");
Id(x => x.Id);
Map(x => x.FirstName);
}
}
Edit 2
je figure/découvert que je pouvais le faire, mais dans ma base de données, je dois avoir une table fictive, ce qui serait inefficace. Il fonctionne, mais il doit y avoir une meilleure façon ...
Dans mon SuperModelMap ...
JoinedSubClass<SubModel>("SubModel", MapSubModel);
private void MapSubModel(JoinedSubClassPart<SubModel> part)
{
// Leave this empty
}
Edit 3 Je suis plus proche, mais je reçois encore une autre erreur sur la sélection.
J'ai essayé ceci.
DiscriminateSubClassesOnColumn("Id")
.SubClass<SubModel>(m => { });
InnerException { "objet avec id: 5586b075-47f1-49c8-871c-9c4d013f7220 n'a pas été de la sous-classe spécifiée: SuperUser (discriminateur était: '1000')"} System.Exception {} NHibernate.WrongClassException
Pouvez-vous nous montrer vos correspondances peut-être? –
J'ai essayé de résoudre mon problème. oui après le commentaire de "hot je sais" pour tout le reste de la page je viens de lire le code comme une histoire et ne pouvait pas arrêter de rire. Bon cas de test solide pour l'apprentissage :) – percent20
@ percent20 - votez-le alors! –