今天看了中文社区Nibernate的文章,自己做了一下,为啥无论我怎么查最后的结果总是 System.Collections.Generic.List`1[NHDemoDomain.Entities.Person],没有从数据库里面查询出结果来,请大家帮忙看看是咋回事,谢了。
G()方法返回了一个List<Person>,然后你调用它的ToString方法,当然显示System.Collections.Generic.List`1[NHDemoDomain.Entities.Person]了……你试试:
lb_insertResult.Text = PersonHandle.G().FirstOrDefault().Name;
这样会把查询的第一条记录的Person的Name显示出来(如果没有Name你就换个属性)。我想说的是磨刀不误砍柴工,语言基础没打好直接上框架,进度非常的慢,先把C#语言基础弄扎实了,学什么框架都很快。
呵呵 说的对 那我想问一下咋把List<Person>类型的数据显示在lbl控件上呀
@李晋: label控件是通过text属性来显示字符串的,那么你首先要把List<Person>(一堆人的数据)转化成字符串,程序可没那么智能会知道你要干什么。假设你的Person有2个属性:Name和Age,你可以这么做:
string output = string.Empty;
foreach(Person p in PersonHandle.G())
{
output += p.Name + " " + p.Age + "; "
}
lb_insertResult.Text = output;
我这里的代码使用了很多“看起来不是很好”的做法,只是为了尽量简单的让你的例子能够运行起来。有很多更优秀的做法,需要有更多的知识理论基础。
@李晋: 简单解释下上面的代码:首先有一个空的字符串叫output,然后从PersonHandle.G()这个方法里得到一堆人的数据, 循环遍历这些人的数据(用foreach),每次遍历一个人,取当前这个人的数据(Name和Age),把它拼凑到output这个字符串里。最终形成了一个包含所有人数据的字符串,再赋值给你那个label的Text属性上。
看一下你连接数据库的方法。GetSession()
public static ISession GetSession()
{
return sessionFactory.OpenSession();
}
我插入的时候好使
@李晋: 那可能就是你Person跟XML的映射了。不知道是不是对的。