仅检索单个值

时间:2014-05-28 22:19:18

标签: c# xml nhibernate

如果要从数据库中检索某些值,则必须始终使用包含大量数据的类。

在我的情况下,我想只从存储过程中检索一个值,我真的需要使用一个只包含单个值的类吗?
我应该如何创建.hbm.xml内部,当我不想使用类时,我应该如何编写c#代码?

它不是IList<>或类似的。仅包含字符串的单个值。

我仍然无法找到此上下文的解决方案。

当您需要包含大量数据的类时,将使用以下代码。

sp_retrieveAllProductList.hbm.xml

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="data_layer" namespace="data_layer">
  <sql-query name="sp_retrieveAllProductList">
    <return-scalar column="Produkt" type="string" />
    <return-scalar column="Produkt_kategori" type="string" />
    <return-scalar column="btn_namn" type="string" />
    exec sp_retrieveAllProductList :Produkt_kategori
  </sql-query>
</hibernate-mapping>



        public IList<Product4> RetrieveAllProductWithPriceNameAndBtn()
        {
            return _session.GetNamedQuery("sp_retrieveAllProductList2")
                            .SetResultTransformer(Transformers.AliasToBean(typeof(Product4)))
                            .List<Product4>();     
        }



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace data_layer
{
    public class Product4
    {
        public virtual string PK_produkt { get; set; }
        public virtual string Produkt { get; set; }
        public virtual string Produkt_kostnad { get; set; }
        public virtual string btn_namn { get; set; }
    }
}

1 个答案:

答案 0 :(得分:0)

我相信你应该可以使用.UniqueResult

string value = session.GetNamedQuery("Named_Query").UniqueResult<string>();

应该能够保持你的映射文件非常简单:

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="data_layer" namespace="data_layer">
  <sql-query name="sp_single_value">
    exec sp_single_value :my_param
  </sql-query>
</hibernate-mapping>