Je suis en train d'adapter Fluent NHibernate à notre application existante existante et j'essaie de déterminer comment utiliser ClassMap et SubclassMap pour la hiérarchie d'entités montrée.Fluent Nhibernate Comment spécifier Id() dans SubclassMap
// BaseObject contains database columns common to every table
public class BaseObject
{
// does NOT contain database id column
public string CommonDbCol1 { get; set; }
public string CommonDbCol2 { get; set; }
// ...
}
public class Entity1 : BaseObject
{
public int Entity1Id { get; set; }
// other Entity1 properties
}
public class Entity2 : BaseObject
{
public int Entity2Id { get; set; }
// other Entity2 properties
}
Les colonnes d'identité pour Entity1 et Entity2 sont nommées de façon unique par table. BaseObject contient des colonnes communes à toutes nos entités. Je n'utilise pas AutoMapping, et je pensais que je pouvais utiliser ClassMap sur le BaseObject, puis utilisez SubclassMap sur chaque entité comme ceci:
public class Entity1Map : SubclassMap<Entity1>
{
public Entity1Map()
{
Id(x => x.Entity1Id);
// ...
}
}
Le problème est, Id() n'est pas défini pour SubclassMap. Alors, comment est-ce que je spécifie dans chaque Entity1Map, Entity2Map, ... (nous avons plus de 100 classes d'entités héritant de BaseObject) ce qu'est l'Id spécifique à l'entité?
Merci d'avance pour toute idée!
Je vois maintenant la distinction et la BaseObjectMap classe abstraite est exactement ce que je suis après. Parfait. Merci beaucoup! – kenswdev
+1 Bonne réponse! –
Bonne réponse. Voilà comment je m'attendais à utiliser des sous-classes pour travailler en premier lieu. Merci pour la solution réfléchie. –