发表评论
#2楼[
楼主]2008-10-30 16:18 |
@侯垒
好的,车上唯一的沙发就给你了,谁做板凳?
觉得……还有个dettached object的问题,即实体对象在不同的SESSION之间传递,同时又要保证lazy load等效果的问题
--引用--------------------------------------------------
李永京: @侯垒
好的,车上唯一的沙发就给你了,谁做板凳?
--------------------------------------------------------
来晚了,也没有板凳坐了,那就纯支持小李同志了。这两天要好好地看你的系列文章了。
@TerryLee
小李的文章样式和老李的文章样式很像。
下一站去哪儿?当然是和NHibernate竞争的ADO.NET Entity Framework了。
李永京大哥也可以就自己的经验对比这2个流行的ORM。看看谁是.NET ORM的王者,看看开源社区与微软官方两大阵营的技术对决。期待中……
#11楼[
楼主]2008-10-30 17:25 |
@Gray Zhang
对的,使用脱离对象可以在不同Session直接,还可以转换为别的状态
#12楼[
楼主]2008-10-30 17:27 |
@TerryLee
谢谢,向老李学习啊。
#13楼[
楼主]2008-10-30 17:28 |
@kunkun
你动作太慢了,还可以看全部回复,这都没赶上,自己就站着吧
#14楼[
楼主]2008-10-30 17:29 |
@kiler
哦,我也使用老李的那个代码插件的。
#15楼[
楼主]2008-10-30 17:29 |
@Justin
谢谢支持!
#16楼[
楼主]2008-10-30 17:32 |
@非主流程序员
感觉写文章不想说比较哪个,各有好处,为何去争那个面子啊,只要自己实用就行,其实NHibernate中很多东西还没有挖掘出来,还在挖
#17楼[
楼主]2008-10-30 17:33 |
@Astar
谢谢支持!一下回复七位。
#20楼[
楼主]2008-10-30 18:46 |
@Clingingboy
的确有点太快了,每天一篇的样子。从14号开始写到现在。下次慢点了
#21楼[
楼主]2008-10-30 18:47 |
@VisualStudio
谢谢支持了啊,呵呵
对楼主强烈支持,谢谢楼主的奉献精神!
做报表怎么实现?
#23楼[
楼主]2008-10-30 19:12 |
@csui2008
谢谢!
报表?NHibernate是ORM框架,你使用VS的报表开发做报表吧
#25楼[
楼主]2008-10-30 23:00 |
@卖热干面的武汉男孩
用户名非常酷,谢谢支持,敬请期待
我比较期待你讲的视图,存储过程和SchemaExport,这方面网上的资料太少了,而且1.2和2.0的版本还不一样,
@李永京
楼主什么时候分析一下Nhibernate的底层实现,session.save(object)的时候反映的commandtext是什么呢?
要是能像linq to sql 那样可以把翻译的sql脚本显示出来那就very well了·~呵呵。
好久没用nhibernate了~有合适的项目在用这个框架.
~继续关注。
@朝晖的.net
配置文件里面设置一个showsql=true就然后配置一下lognet可以输出了。
@kiler
这个我还真不知道~~
thanks for you post ! :^)
#31楼[
楼主]2008-10-31 12:18 |
@BlueStar
哦,好的啊
#32楼[
楼主]2008-10-31 12:20 |
@朝晖的.net
我在文章中一直说到了NHibernate生成的SQL语句,只要把showsql=true就可以了,具体看看第二篇的文章。
#33楼[
楼主]2008-10-31 12:20 |
@巫云
呵呵,依然是学习笔记
#34楼[
楼主]2008-10-31 12:21 |
@kiler
说的没错,呵呵
#36楼[
楼主]2008-11-02 15:47 |
@圣盗
谢谢关注!
#38楼[
楼主]2008-11-08 14:56 |
@Martin(高超)
忒搞了~~
加油,楼主!
不知道您即将写的关于“代码生成工具”部分,用的是什么工具呢?是codesmith吗?
#40楼[
楼主]2008-11-10 11:56 |
@songql
不是的,我用开源的MyGeneration
楼主,写得相当不错!
有没有关于NHibernate用C/S结构来访问的资料?
请问ERP项目用这个会不会影响速度?
#42楼[
楼主]2008-11-24 21:03 |
@dreamistar
NHibernate是数据访问层的东西。。与架构无关;在DAL层写一些数据操作,相当于 数据服务。然后客户直接调用一些服务就行了,客户在这里可以是Web、桌面程序、SL等等
NHibernate性能很好的啊
楼主...为什么<generator class="identity"/>自动生成以后的存储过程居然是这样啊"....@p4=default"?这样存储过程执行就失败了.
楼主...为什么<generator class="identity"/>自动生成以后的存储过程居然是这样啊"....@p4=default"?这样存储过程执行就失败了.
#46楼[
楼主]2008-12-23 19:22 |
@风行yang5658
看看存储过程那两篇文章吧,我提到这个问题了,是主键生成器问题
#48楼[
楼主]2008-12-25 19:06 |
@zzticzh
不客气~~谢谢支持~~
请教个问题,1对多的时候,主表可以正常保存,不过子表总是update,而不是save,这一般会是那里出了问题了呢。。。我代码已经检查了N遍了。。。
#50楼[
楼主]2008-12-29 19:48 |
@LeoXing
级联操作有级联更新等操作,自己修改一下就可以了
楼主...为什么<generator class="identity"/>自动生成以后的存储过程居然是这样啊"....@p4=default"?这样存储过程执行就失败了
楼主,我也用过increment,但会出现问题的问题
1 插入一行数据得到ID:5
2 删除ID为5的数据
3 再插入一行数据,这个时候,NH返回的ID为5,数据库的ID为6
用set indentity_insert off就更科幻了
有不同的两张表,一张表运行正常,另一张表运行还会出现我上述的问题.
完全迷糊了
谢谢
资料很翔实啊!!!
收藏下来先。
正在取舍EF,NH和XPO.
EF和XPO都可以使用Lambda,使用Linq的句法对实体进行检索查询,由ORM底层生成对DB的Select指令;
想请教一下,现在Linq for NH 是否已经可以使用? 是否也有相同类似的效果?
#54楼[
楼主]2009-01-06 20:21 |
@风行yang5658
看看存储过程那篇笔记吧,自己也在探索中。源码最清楚了。
#55楼[
楼主]2009-01-06 20:23 |
@timiil
NHibernate 接下来的2.1版本将集成LINQ to NHibernate了。期待中~~
前几天NHibernate Contrib下载了NHibernate.linq软件,这是 不是就是Linq To NHibernate
可惜没有早看到lz的文章,或者说lz没早点写,走了不少弯路!
#62楼[
楼主]2009-02-26 17:56 |
@yunggood
@amiya
@鱼蛋
@yearN
谢谢支持~~~
#63楼[
楼主]2009-02-26 17:57 |
@wy122804912
@默然
是的,在NHibernate Contrib上提供了NHibernate.Linq-1.0.0.Alpha下载,大家可以尝鲜一下吧,但是大多数功能还没有实现呢
LZ..请饶恕我的无理!说真的.我自我感觉学得比较辛苦.自己一直很努力.但感觉自己水平并没有提高多少!(但自己真的很喜欢编程)实在是很惭愧也很懊恼..看到LZ这些牛人们很崇拜..也以你们为目标..希望有朝一日能与尔平起平坐...但越往下学发现的问题越多..身边没有可以为我答题解疑的良师益友...冒昧一下.不知LZ是否有Q.?能否与鄙人畅谈学习方法(鄙人Q:342709479)..或邮箱:342709479@qq.com..不太用博客园的Email..因为鄙人发誓..不成为个像样的程序员.不在博客园上发文...可能LZ不太愿意搭理我这种人..但.我是诚心诚意的..希望能会.(请注明老大名号!感激不尽.)
#66楼[
楼主]2009-03-02 22:02 |
@迷茫的小菜
呵呵,我也是初学者啊,只要自己努力就行,每天进步一点点
楼主,你这个系列真是太好了。我正打算好好学这个呢。但是网上其它的一些文章都写的不是很好理解。看到你写的这个,实在是太激动了。
@李永京
LZ太谦虚了..我看书经常是看过就忘..写项目也是..写过就忘..很多东西原本是会的..但一下子就忘了..不过再看一次又很快记起来了.不像第一次学的时候...不知道大家也是不是这种状态.还是我个人的状态..能畅谈下您的学习方法吗?如何学?如何能会而不忘..就算NHibernate我现在会了.但一段时间不去接触它我又忘了..呵呵.可能鄙人比较愚钝吧.请LZ赐教.!
学习,正在找哪个好用,教程好呢。看楼主这么详细的介绍,太好了
请问在vs2005下可以用2.0版本的吗?
#74楼[
楼主]2009-04-02 23:13 |
@sky114
完全可以的~~
李大哥好,最近一直在学习NHibernate,天天在你的博客上浏览,搞了几天,发现一个问题,是关于多表关联查询,然后绑定数据的问题,能否给个解答
#76楼[
楼主]2009-04-04 23:55 |
@Showz_y
可以具体的吗?
比方说,我要绑定用户的信息和该用户订单信息和产品信息
#79楼[
楼主]2009-04-05 23:02 |
@Showz_y
不要意思
在NHibernate中可以使用一个查询来查询这个信息,然后返回List列表,例如你绑定到GirdView中,就像数据源那样绑定的啊,不过在Web程序中NH的Session要控制好
<td><%# Eval("CustomerId")%></td>
<td><%# Eval("Firstname")%></td>
<td><%# Eval("Lastname")%></td>
<td><%# Eval("Orders")%></td>
是这样的绑定的啊,但是绑定Order表的时候,我要绑定OrderId,这个怎么写。
是用Repeater1绑定的,绑定IList<Customer>,因为Customer和Order是关联的,查询是可以,绑定数据不知道怎么绑定,然后Order和Product又关联,然后绑定Productid,绑定这个问题困惑了一天了,希望能给你解答,因为是初学NHibernate,望您见谅!在这里先谢谢先,呵呵
#81楼[
楼主]2009-04-05 23:23 |
是<td><%# Eval("Orders.OrderId")%></td>
<td><%# Eval("Orders.Products.ProductId")%></td>吧,你看看那个List列表的属性,可以绑定的
哈哈,我知道你可能会这样说,但是我有这样测试过,但是一直出现这种错误
DataBinding:“NHibernate.Collection.Generic.PersistentGenericSet`1[[DomainModel.Entities.Order, DomainModel, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]”不包含名为“OrderId”的属性。
是什么原因呢?难道是配置文件有问题?谢谢您的解答
还有个问题额,调试程序,经常遇到超时时间已到。在操作完成之前超时时间已过或服务器未响应。 我把Connect Timeout=5000;咯
#83楼[
楼主]2009-04-05 23:47 |
@Showz_y
呵呵,这是延迟加载特性,选择立即加载就可以了,你在查询中可以调试到Order列表了
foreach (Customer c in customers)
{
//c.CustomerId;
//c.Firstname;
//c.Lastname;
foreach (Order o in c.Orders)
{
int i = o.OrderId;
string orderDate = o.OrderDate.ToString();
foreach (Product p in o.Products)
{
float cost = p.Cost;
string name = p.Name;
int productid = p.ProductId;
}
}
是的,这样数据都能查到,但是绑定就有问题了,郁闷
关于记载特性刚开始看呢,还没深究,绑定问题搞定再说了
#85楼[
楼主]2009-04-06 11:12 |
@Showz_y
还要进行转换的ISet---IList
小弟愚笨,希望讲细点,最好贴个代码是怎么写的,我真不知道怎么搞了,谢谢了
#87楼[
楼主]2009-04-06 21:30 |
Domain----DTO,在页面上使用DTO,所谓DTO简单就是把NHibernate特有的集合转换为你需要的集合,我们通常使用List集合来绑定的。所谓DTO就是做这个事情的,对于初学者可以用Domain直接绑定到UI上面的。但是有时需要分开写查询语句。
你的DAO的查询语句怎么写的?
查询语句是这样的
IList<Customer> customers = _session.CreateSQLQuery("select distinct customer.* from Customer customer"
+ " inner join [Order] o on o.Customer=customer.CustomerId"
+ " inner join OrderProduct op on o.OrderId=op.[Order]"
+ " inner join Product p on op.Product=p.ProductId where o.OrderDate >:orderDate")
.AddEntity("Customer", typeof(Customer))
.SetDateTime("orderDate", orderDate)
.List<Customer>();
#89楼[
楼主]2009-04-06 22:47 |
@Showz_y
现在我也在为绑定发愁~~~Tree类型,你这关闭延迟加载就可以帮上去的,不过你使用SQL查询应该没有延迟加载特性啊。
一个Customer有多个OrderId吧
要是绑定第一个Id
Customer里边加个属性
public int? FirstOrderId
{
get
{
if(Orders != null && Orders.Count > 0)
return Orders[0].Id;
return null;
}
}
然后绑定这个FirstOrderId就行了吧
呵呵,谢了啊
那一对一的时候,怎么绑定两个表的信息呢?楼上的谢谢
#95楼[
楼主]2009-05-05 08:44 |
@火舞耀阳
提供一部分下载了~~
楼主真的很强大,什么时候能讲下跟SPRING.NET的整合问题。
一直以为Nhibernate是Java的东西。对Nhibernate的了解几乎为零,呵呵。
慢慢学习下!
使用MyGeneration工具时生成的cs和xml中出现unknown,能否提供一个准确的模版??????
#100楼[
楼主]
2009-07-01 08:50 |
@JL
暂时没有