如何从存储过程中检索 class 的值
How to retrieve the value of a class from stored procedure
目标:使用 Fluent NHibernate 以便通过存储过程将 class 的值检索到变量中。
问题:
using (NHibernate.ISession session = FluentNHibernateHelper.OpenSession())
{
var result = session.CreateSQLQuery("exec test :@data").SetParameter("data", data).AddEntity(typeof(Test));
}
它不起作用,我缺少什么代码才能在变量结果中检索 class test 的值?
换句话说,我想在单个 class 而不是列表中检索 1、2 和 asdf 的值。
我正在使用 C# 代码。
谢谢!
CREATE PROCEDURE [dbo].[test]
@data INT
AS
BEGIN
SELECT
1 as a,
2 as b,
'asdf' c
END
GO
C#class:
public class Test
{
public virtual int a { get; set; }
public virtual int b { get; set; }
public virtual string c { get; set; }
}
public class TestMap : ClassMap<Test>
{
public TestMap()
{
Id(x => x.a);
Map(x => x.b);
Map(x => x.c);
}
}
.List<T>().Single();
您必须检索所有数据,然后检索单个数据。
不是推荐的解决方案,但它解决了这个问题。
目标:使用 Fluent NHibernate 以便通过存储过程将 class 的值检索到变量中。
问题:
using (NHibernate.ISession session = FluentNHibernateHelper.OpenSession())
{
var result = session.CreateSQLQuery("exec test :@data").SetParameter("data", data).AddEntity(typeof(Test));
}
它不起作用,我缺少什么代码才能在变量结果中检索 class test 的值?
换句话说,我想在单个 class 而不是列表中检索 1、2 和 asdf 的值。
我正在使用 C# 代码。
谢谢!
CREATE PROCEDURE [dbo].[test]
@data INT
AS
BEGIN
SELECT
1 as a,
2 as b,
'asdf' c
END
GO
C#class:
public class Test
{
public virtual int a { get; set; }
public virtual int b { get; set; }
public virtual string c { get; set; }
}
public class TestMap : ClassMap<Test>
{
public TestMap()
{
Id(x => x.a);
Map(x => x.b);
Map(x => x.c);
}
}
.List<T>().Single();
您必须检索所有数据,然后检索单个数据。
不是推荐的解决方案,但它解决了这个问题。