1

enum フィールドを dto プロパティにマップしようとしています。私は次のようなPositionalToBeanResultTransformerを使用しています:

PositionalToBeanResultTransformer trans = new PositionalToBeanResultTransformer(typeof(DTOClass), new string[] { "Id", "EnumProperty" });
var data = Sesion.CreateSQLQuery("SELECT Id, EnumField FROM Table")
        .AddScalar("EnumField", NHibernateUtil.Custom(typeof(Enumerador)))
        .SetResultTransformer(trans)
        .List<DTOClass>();

public class DTOClass
{
    public int Id { get; set; }
    public Enumerador EnumProperty { get; set; }
}

DTOClass がマップされていないため、AddEntity() を使用できず、AddScalar() を含むコードは、NHibernate.UserTypes.IUserType を実装する必要があるというエラーをスローします。DB の文字列フィールドを SQLQuery の列挙型に変換するにはどうすればよいですか?

助けてくれてありがとう。

4

1 に答える 1

0

AutoMappingを使用していない場合は、ClassMapに次のような同様の行を追加します。

Table("MyClass");
Id(x => x.Id).GeneratedBy.Identity();
Map(x => x.Type).CustomType(typeof(Enumerations.MyType));

public virtual int Id { get; set; }
public virtual Enumerations.MyType Type { get; set; }

私は通常、列挙型を整数としてDBに格納し、ClassMapは列挙型に適切にマップし直します。

于 2012-06-21T19:45:46.267 に答える