【问题标题】:NHibernate : QueryOver in generic methodNHibernate:通用方法中的QueryOver
【发布时间】:2011-06-16 08:15:04
【问题描述】:

我有这个测试方法,“列表”方法有问题。我想使用几个类(都包含 IAdminDecimal)。在 QueryOver 上,我有这个错误: 类型“T”必须是引用类型才能在泛型类型或方法“NHibernate.ISession.QueryOver()”中用作参数“T”

using (var session = sessions.OpenSession())
{
    using (var tx = session.BeginTransaction())
    {
        CurrentSessionContext.Bind(session);

        AdministrationService service = new AdministrationService(session);
        service.List<AdminDelay>();

        tx.Commit();
    }
}

班级:

public class AdministrationService
{
    private readonly ISession _session;

    public AdministrationService(ISession session)
    {
        _session = session;
    }

    public IList<T> List<T>() where T : IAdminDecimal
    {
        var res = _session.QueryOver<T>().List<T>();
        return res;
    }
}


public interface IAdminDecimal
{
    int Id { get; set; }
    int Code { get; set; }
    decimal Value { get; set; }
    bool IsDeleted { get; set; }
}

public class AdminVAT : IAdminDecimal
{
    public virtual int Id { get; set; }
    public virtual int Code { get; set; }
    public virtual decimal Value { get; set; }
    public virtual bool IsDeleted { get; set; }
}

【问题讨论】:

    标签: c# nhibernate generics queryover


    【解决方案1】:

    试试:

    public IList<T> List<T>() where T : class, IAdminDecimal
    

    【讨论】:

    • 我试过了,但是在“List”的测试方法中,我有这个错误:类型“AdminDelay”不能用作泛型类型或方法“AdministrationService.List”中的类型参数“T” ()'。没有从“AdminDelay”到“IAdminDecimal”的隐式引用转换。
    • 这表明 AdminDelay 没有实现 IAdminDecimal。你有 AdminDelay 类型的代码吗?
    • 你是对的,这是我的错误“AdminDelay”没有实现这个接口,但是“AdminVAT”是的,这是工作:) 谢谢。
    猜你喜欢
    • 2012-04-24
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-07
    • 2011-12-19
    • 1970-01-01
    相关资源
    最近更新 更多