Domanda

Nhibernate non sembra davvero che restituisca un ReadOnlyCollection, Depsite Me Award Me Implement ciò che ho letto in circa 30 posti come strategia di accesso corretta per una raccolta solo lettura supportata in un campo privato.

Ho il seguente codice nella mia entità:

private readonly IList<TagAlias> _aliases = new List<TagAlias>();

public IEnumerable<TagAlias> Aliases
{
    get
    {
        return new ReadOnlyCollection<TagAlias>(this._aliases); 
    }
}

e la seguente mappatura per consentire l'accesso al campo di supporto

public sealed class TagMap : ClassMap<Tag>
{
    public TagMap()
    {
        Table("Tag");
        Id(x => x.Id).Column("TagId").GeneratedBy.Identity();
        Map(x => x.Value).Column("TagName");
        HasMany(x => x.Aliases)
            .AsSet()
            .Access.ReadOnlyPropertyThroughCamelCaseField(Prefix.Underscore)
            .KeyColumn("TagId")
            .LazyLoad()
            .Inverse()
            .Cascade.AllDeleteOrphan();
    }
}

Perché diavolo Nhibernate insiste ancora per ottenere la lista di supporto tramite la raccolta Ready Only quando faccio qualcosa di simile. Clear (), piuttosto che accedervi come se lo avessi detto nella mappatura? Desso detesto per cambiare il mio modello di dominio solo per motivi di strato di persistenza, ma Nhibernate non sembra voler collaborare.

L'errore che ottengo è "Una raccolta con Cascade =" All-DELETE-Orphan "non è stata più citata dall'istanza di entità proprietaria" ma scompare quando torno this._aliases nella proprietà getter.

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top