8
votes

Comment mapper une propriété sans setter et aucune propriété de support couramment avec NHibernate?

Disons que j'ai l'entité suivante:

Map(x => x.CalculatedAmount)
      .ReadOnly();


0 commentaires

3 Réponses :


2
votes

Je n'utilise pas couramment, mais dans la mappage d'une propriété persistée sans setter n'est mappée avec Access = "Readonly" , alors cherchez quelque chose comme .Readonly ()

(Radique est du point de vue modèle ; la valeur est écrite sur la base de données et utilisées dans des contrôles sales)


2 commentaires

J'ai mis à jour ma réponse pour résoudre ce problème ... c'était l'une des premières choses que j'ai rencontrées, mais j'ai toujours fini par l'exception ci-dessus. Pouvez-vous penser à un paramètre dans NHibernate qui bloquerait cela de travailler?


Pouvez-vous exporter le XML que fluentnh génère?



0
votes

On dirait que c'est une valeur calculée. Si vous pouvez calculer cette valeur à un moment donné, alors pourquoi le stocker du tout?


4 commentaires

Bonne question ... La réponse courte est la non-répudiation. Même si ma méthode de calcul change, je peux toujours indiquer ce qui a été calculé à un point donné à temps / corrélé à une action.


@Brandon Linton: Assez juste. +1. Y a-t-il une raison pour laquelle un champ de support privé n'est pas souhaitable ou est-ce plus un problème d'esthétique?


Cela ne finirait jamais de vous habituer ... Le calcul doit être effectué à chaque fois, car les facteurs variables peuvent changer à tout moment.


J'ai la meme situation. J'ai besoin de persister une valeur en lecture seule et dérivée à des fins de rapport.



5
votes

J'ai compris que la façon dont la cartographie fonctionne dans NHibernate fluide consiste simplement à ajouter la propriété d'accès: xxx


0 commentaires