1 votes

Puis-je avoir une collection d'instances IUserType ?

Est-il possible d'avoir une collection d'entités qui sont mappées via un IUserType ? Par exemple :

class Foo
{
    public int Id { get; set; }
    public ISet<Special> Items { get; set; }
}

class Special
{
    public Special(string columnValue)
    {
        _val = columnValue;
    }

    public override string ToString()
    {
        return _val.TranformInInterestingWays();
    }

    private string _val;
}

class SpecialUserTypeForMapping : IUserType
{
    // assume that all the right stuff is here
    // for using the non-default constructor on the way in
    // and calling ToString() on the way out
}

Si je lis correctement la documentation, ni la fonction <set >, <one-to-many >, <many-to-many >, ni <class > L'élément "IUserType" prend en charge l'attribut "type" utilisé pour appliquer le mappage IUserType à l'élément "IUserType". <property >s. Comment dois-je procéder pour établir cette carte ?

2voto

David Rubin Points 393

La solution la plus expéditive semble être d'utiliser la fonction <element >, comme suit :

<class name="Foo" table="foos">
     <id  name="Id" />
     <set name="Items" table="foo_special">
         <key column="fooId" />
         <element column="special_value" type="SpecialUserTypeForMapping" />
     </set>
</class>

La récupération de différentes instances de Foo à partir de la base de données ne pose aucun problème, mais il n'est pas clair s'il est possible d'écrire des requêtes sur la colonne special_value, ce qui est une exigence dans mon scénario. Cette question semble indiquer que ce n'est pas le cas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X