2010-10-28 20 views
1

J'ai un objet commanditaire qui a une collection qui ressemble à ceci ...Prévention Nhibernate de persister une collection spécifique dans une classe

public virtual IDictionary<SettingId, object> SettingValueDefaults { get; set; } 

Ce sont en fait tiré comme un sous-ensemble d'une grande table. Je dois être capable de lire à partir de ceux-ci, et cela fonctionne correctement.

Cependant, je voudrais être capable de faire des changements au moment de l'exécution de cette collection, et nhibernate ignore ces changements, ou essaie même de maintenir la collection du tout.

Encore une fois, j'ai besoin de nhibernate pour récupérer les données, donc je peux l'utiliser dans le code, mais pas persister les changements de données que je fais à la collection pendant l'exécution.

La cartographie de cette collection est ci-dessous:

<map name="SettingValueDefaults" cascade="none"> 
    <cache usage="read-write" region="Sponsors" /> 
    <key not-null="true" column="SponsorId"/> 
    <index column="SettingId" type="HealthTools.Core.Domain.Model.Sponsor.Settings.SettingId, HealthTools.Core"/> 
    <element column="DefaultValue" type="HealthTools.Infrastructure.DataAccess.SqlVariant, HealthTools.Infrastructure"/> 
    <loader query-ref="GetDefaultSettingValues" /> 
    </map> 

Voici l'erreur que je reçois de Nhibernate quand essaie de persister l'objet commanditaire.

« Nom d'objet incorrect « HealthTools.dbo.SettingValueDefaults »

Cela survient parce qu'il n'y a pas de table de SettingsValueDefaults, la carte est tout simplement en tirant des données de la table Sponsor.Settings via la fonction GetDefaultSettingValues.

Répondre

2

Vous voulez faire en lecture seule:

<map name="SettingValueDefaults" cascade="none" access="readonly">