首页 新闻 搜索 专区 学院

NHibernate

0
悬赏园豆:80 [已解决问题] 解决于 2012-03-13 10:36

今天看了中文社区Nibernate的文章,自己做了一下,为啥无论我怎么查最后的结果总是  System.Collections.Generic.List`1[NHDemoDomain.Entities.Person],没有从数据库里面查询出结果来,请大家帮忙看看是咋回事,谢了。

简单点,再简单点的主页 简单点,再简单点 | 初学一级 | 园豆:4
提问于:2012-03-12 12:57
< >
分享
最佳答案
0

G()方法返回了一个List<Person>,然后你调用它的ToString方法,当然显示System.Collections.Generic.List`1[NHDemoDomain.Entities.Person]了……你试试:

lb_insertResult.Text = PersonHandle.G().FirstOrDefault().Name;

这样会把查询的第一条记录的Person的Name显示出来(如果没有Name你就换个属性)。我想说的是磨刀不误砍柴工,语言基础没打好直接上框架,进度非常的慢,先把C#语言基础弄扎实了,学什么框架都很快。

收获园豆:80
水牛刀刀 | 大侠五级 |园豆:6350 | 2012-03-12 13:51

呵呵 说的对  那我想问一下咋把List<Person>类型的数据显示在lbl控件上呀

简单点,再简单点 | 园豆:4 (初学一级) | 2012-03-12 14:49

@李晋: 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;

我这里的代码使用了很多“看起来不是很好”的做法,只是为了尽量简单的让你的例子能够运行起来。有很多更优秀的做法,需要有更多的知识理论基础。

水牛刀刀 | 园豆:6350 (大侠五级) | 2012-03-12 15:26

@李晋: 简单解释下上面的代码:首先有一个空的字符串叫output,然后从PersonHandle.G()这个方法里得到一堆人的数据, 循环遍历这些人的数据(用foreach),每次遍历一个人,取当前这个人的数据(Name和Age),把它拼凑到output这个字符串里。最终形成了一个包含所有人数据的字符串,再赋值给你那个label的Text属性上。

水牛刀刀 | 园豆:6350 (大侠五级) | 2012-03-12 15:28
其他回答(1)
0

看一下你连接数据库的方法。GetSession()

悟行 | 园豆:12373 (专家六级) | 2012-03-12 13:36

public static ISession GetSession()
{
return sessionFactory.OpenSession();
}

我插入的时候好使

@李晋: 那可能就是你Person跟XML的映射了。不知道是不是对的。

支持(0) 反对(0) 悟行 | 园豆:12373 (专家六级) | 2012-03-12 13:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册