Teddy's Knowledge Base

NBearV2视频教学系列总索引,欢迎多提意见和建议[09/21更新至IoC篇]

重要通知

随着NBearV3的发布,因为NBearV3重写了整个ORM实现,NBearV2中关于ORM的所有内容在NBearV3中都不具有参考价值,如果您想了解NBearV3的ORM的介绍,请参考《NBearV3 Step by Step教程——ORM篇》。同时,关于Web及IoC组件,NBearV3在V2基础上进行了改进和优化,但是,接口和使用方法还是类似V2中的组件,因此,本教成的第3篇、第4篇,依然对于V3有参考价值。


演示媒介

Flash在线及下载观看。

推荐观看分辨率

为了获得最佳的观看效果,建议在观看所有flash视频时,将屏幕分辨率调节为1280*1024以上。

目录(初定)

0. 简介篇

内容主要为NBear功能纵览。

0.1 NBear类库结构及功能简介[发布时间:9/5] 下载(点击鼠标右键另存为)

1. 实体定义篇

内容涉及实体定义基础,实体自定义属性,实体的实例化过程简介,使用自定义实体实现代替默认的动态实现,实体的Attribute和Configuration方式的元数据设置,实体继承关系映射,EntityGen和EntityConfigurator工具的使用,实体的序列化和反序列化等。

1.1 实体定义基础[发布时间:9/5] 下载(点击鼠标右键另存为)

1.2 实体实例化及使用自定义实体[发布时间:9/6] 下载(点击鼠标右键另存为)

1.3 实体继承关系配置及使用EntityGen和Configurator[发布时间:9/8] 下载(点击鼠标右键另存为)

      由于播放超大flash消耗的系统资源较多,为照顾内存较少的同学,这里还提供一个拆分版本,将本章分为上下两部分,推荐内存512M以下的用户观看:
      上半部分  下载(点击鼠标右键另存为)
      下半部分  下载(点击鼠标右键另存为)

2. 实体持久化篇

内容涉及使用Gateway类,使用ActiveEntity类,使用强类型查询语法,SQL调试等。

2.1 基于NBear.Data的实体持久化[发布时间:9/10] 下载(点击鼠标右键另存为)

3. Web篇

内容涉及NBear.Web命名空间提供的组件:Url重写,Ajax支持,Page,MasterPage,UserControl基类扩展,多语言支持等。

3.1《全面解析ASP.NET2.0下的URL重写

3.2 《使用Page/MasterPage/UserControl扩展基类(WebHelper,AjaxHelper,多语言支持)

4. IoC篇

内容涉及NBear.IoC构架简介,基于Castle的服务工厂,基于ServiceMQ的分布式服务容器,基于.Net Remoting使用分布式事务容器等。

4.1 基于NBear.IoC的企业级系统构架[发布时间:9/21]

      由于播放超大flash消耗的系统资源较多,为照顾内存较少的同学,将本章分为上下两部分:
      上半部分  下载(点击鼠标右键另存为)
      下半部分  下载(点击鼠标右键另存为)

5. 案例篇

内容涉及基于NBear的软件系统构架,先数据库表后实体vs先实体后数据库表等典型案例的分析和开发演示。

(欢迎使用NBear进行开发的朋友有时间,有想法的,也能写一些开发感受,大家互相学习~~)

[待定]

posted on 2006-09-09 10:01 Teddy's Knowledge Base 阅读(6476) 评论(77)  编辑 收藏 所属分类: NBearNBear Video

评论

#1楼  2006-09-04 12:04 lqliang [未注册用户]

真的很期待!   回复  引用    

#2楼  2006-09-04 12:33 Minwell      

不知道现在有没有 damo 可以参考。。。。。。。
视频教学效果很好,如果提前有个 damo 参考会更好!   回复  引用  查看    

#3楼  2006-09-04 12:51 Minwell      

呵呵 我下了源码,发现里面有 damo 呵呵不好意思!!! 学习一下   回复  引用  查看    

#4楼  2006-09-04 14:34 Matildawaltzer      

希望视频文件尽量清晰一些,讲解的时候最好配合着demo一起,不要把讲解和demo分开。
最好是先从一个案例开始,逐步深入分析。   回复  引用  查看    

#5楼 [楼主] 2006-09-04 14:55 Teddy's Knowledge Base      

谢谢大家的支持,视频的清晰可以保证,会有和demo结合的主题,也会有关于各个细节的主题。

有一个问题征询一下大家的意见,大家希望教学视频采用文字解说还是语音解说?   回复  引用  查看    

#6楼  2006-09-04 17:29 Minwell      

最好 先把框架的整体流程 走一遍。。。这样会很清晰的!!!
支持博主。。。。祝博主的框架走向海外,给国内争光!!   回复  引用  查看    

#7楼  2006-09-04 17:30 Minwell      

@Teddy's Knowledge Base

我觉得最好是采用语音解说。。。。。   回复  引用  查看    

#8楼  2006-09-04 20:27 aspnetx      

其实加字幕说明也可以的
我觉得针对于入门的朋友,还是从如何实现一个表的增删查改这样更容易理解些,然后才回感觉到框架的优点和为什么要使用它以及更深层次的去体会它是怎么实现的.
另:感谢这段时间对我的热心帮助,谢谢!   回复  引用  查看    

#9楼  2006-09-04 21:15 czyl [未注册用户]

最近正好想学一下 ORM , NHibernate 比较重量级,没充足的时间认真看。
Teddy 出视频教学真是太好了, 看起来没有看文字那么累, 下班后看看视频教学的东东还是很不错的   回复  引用    

#10楼  2006-09-04 22:09 菌哥      

期待中...   回复  引用  查看    

#11楼  2006-09-05 10:44 Minwell      

建议 Teddy 搞一个课程讨论区,有不明白的地方 可以去讨论一下。。。。   回复  引用  查看    

#12楼  2006-09-05 16:03 菌哥      

对,到博客园的论坛去开一个话题   回复  引用  查看    

#13楼 [楼主] 2006-09-05 16:11 Teddy's Knowledge Base      

@菌哥
@Minwell
每个视频的在线观看页面底部有一个“发表评论”链接,可以点击那里留言。每个视频会对应一个主题,大家可以畅所欲言,提出各种问题,我会一一进行文字或视频解答。   回复  引用  查看    

#14楼  2006-09-06 08:21 anhwa [未注册用户]

flash看到后面,系统内存有1G多了,机器都跑不动了,看不完。太耗资源了。   回复  引用    

#15楼 [楼主] 2006-09-06 09:38 Teddy's Knowledge Base      

@anhwa
后面的视频我会尽量切分成较小的片断,细分每个主题,尽可能减少文件大小和内存消耗,谢谢大家的意见和建议。   回复  引用  查看    

#16楼  2006-09-06 10:27 Lukiya [未注册用户]

SelectRowCount方法必须加where条件吗?

要是想查询整个表有多少纪录怎么办,莫非用"1=1"………………或者自己写Sql吗?   回复  引用    

#17楼 [楼主] 2006-09-06 10:31 Teddy's Knowledge Base      

@Lukiya
可以调用下面的方法进行聚合查询:
public object SelectMax<IEntityType>(string columnName, WhereClip where) where IEntityType: IEntity;
public object SelectMax<IEntityType>(string columnName, string where, object[] paramValues) where IEntityType: IEntity;
public object SelectMin<IEntityType>(string columnName, WhereClip where) where IEntityType: IEntity;
public object SelectMin<IEntityType>(string columnName, string where, object[] paramValues) where IEntityType: IEntity;
public int SelectRowCount<IEntityType>(WhereClip where) where IEntityType: IEntity;
public int SelectRowCount<IEntityType>(string where, object[] paramValues) where IEntityType: IEntity;
public object SelectSum<IEntityType>(string columnName, WhereClip where) where IEntityType: IEntity;
public object SelectSum<IEntityType>(string columnName, string where, object[] paramValues) where IEntityType: IEntity;

其中,SelectRowCount(null, null)返回表的全部记录数量。   回复  引用  查看    

#18楼  2006-09-06 17:58 idealshan@gmail.com [未注册用户]

呵呵,真是太感谢了。学习。   回复  引用    

#19楼  2006-09-07 16:41 Lukiya [未注册用户]

发现Bug…………

我将UploadFile上传的流传递到业务逻辑层处理保存事件。
出现无法序列化异常。
貌似NBear不支持Stream类型的参数。

以下是出错信息:

System.Web.HttpInputStream cannot be serialized because it does not have a parameterless constructor.   回复  引用    

#20楼 [楼主] 2006-09-07 16:45 Teddy's Knowledge Base      

@Lukiya
是的,服务接口的参数和返回值类型必须是可序列化类型或者实体、实体数组,建议只使用.Net Framework的基本数据类型和实体、实体数组类型,不要使用复杂的类和不可预知的自定义类。   回复  引用  查看    

#21楼  2006-09-07 20:03 Lukiya [未注册用户]

恩,换成byte[]就一切正常了。   回复  引用    

#22楼  2006-09-09 10:56 aspnetx      

50多M确实大了点
我建议可以在生成swf的时候稍微降低一下质量
技术框架类的话题只要保证大家能看清里面的字以及认出是哪个截面就成
毕竟不是艺术设计类的视频嘛需要对画面质量那么高
或者在每秒的侦数也可以减少一下
那样文件就会小很多了
理想状态下应该在10M左右   回复  引用  查看    

#23楼 [楼主] 2006-09-09 11:13 Teddy's Knowledge Base      

@aspnetx
好建议,后面的章节我会缩小视频大小。   回复  引用  查看    

#24楼  2006-09-09 11:20 aspnetx      

@Teddy's Knowledge Base
另:您可以先把0.1节的那个视频下按照如上所说的较低质量先导出一下看看
或提供不同画面质量的下载
大文件分段下载,个人认为不是很妥善的方法
导出的时候质量降低20%左右一般在视觉上影响不会太大,但文件大小却能减少很多   回复  引用  查看    

#25楼 [楼主] 2006-09-09 11:26 Teddy's Knowledge Base      

@aspnetx
0.1-1.2的视频源码不小心被删了,我找一个转换软件直接转换后降低品质好了。我正在重新上传1.3分拆版的降低品之后的版本,大小缩小了一半。感觉效果还可以,我后面的章节就按这个低品质上传制昨吧。谢谢你的建议。   回复  引用  查看    

#26楼  2006-09-09 13:35 aspnetx      

@Teddy's Knowledge Base
永远地支持
同时也真心的感谢您那段时间对我的帮助   回复  引用  查看    

#27楼  2006-09-09 23:11 Lowkey      

s-demo 这个录制软件还可以.建议teddy试用一下   回复  引用  查看    

#28楼 [楼主] 2006-09-09 23:16 Teddy's Knowledge Base      

@Lowkey
谢谢推荐,不过,这个软件好像不支持录音的~~   回复  引用  查看    

#29楼  2006-09-09 23:18 Lowkey      

支持哦   回复  引用  查看    

#30楼  2006-09-09 23:44 progame[匿名] [未注册用户]

assBuilder 汗啊
猜了半天不知是什么,后来到解说才知是Assembly   回复  引用    

#31楼  2006-09-10 15:45 xiaosan-33      

支持
  回复  引用  查看    

#32楼  2006-09-11 09:13 stonezhu      

强烈支持!!!:-)   回复  引用  查看    

#33楼  2006-09-11 14:37 hope[匿名] [未注册用户]

web控件等待
呵呵   回复  引用    

#34楼  2006-09-11 20:34 aspnetx      

听说ado.net3.0有orm了
teddy感觉这个怎么样呢?会不会对您的这个有冲突
或者,nbear能很快的应用到ado.net3.0?
微软霸道惯了这个大家都清楚   回复  引用  查看    

#35楼 [楼主] 2006-09-11 20:41 Teddy's Knowledge Base      

@aspnetx
ado.net3.0我一直关注,一方面,我不会去作和ms冲突的东西,另一方面,我也会本着易用性为第一考虑,来不断改进NBear的,如果ado3.0对我的这个思路有帮助,我肯定会整合它,但是也决不会为了ado3.0而ado3.0的。   回复  引用  查看    

#36楼  2006-09-12 17:00 Vokobo      

@Teddy:
东西做好,教会别人怎么用也很重要!
你,做得很出色!
对你的技术和共享精神表感谢和崇高敬意。

FLASH到后面(大约六分之一的样子),就只有声音没有图像了。   回复  引用  查看    

#37楼  2006-09-12 23:35 Steveson[匿名]      

Teddy:
Select<IEntityType>(string where, object[] paramValues) where IEntityType: IEntity;
写成Select<IEntityType>("ID=@ID", new object{ 1 }) ;没有问题,可以将数据库中的纪录查询出来。(ID在数据库中为int)
可是写成Select<IEntityType>("UserName=@UserName", new object{ "aaa" });
数据库中明明有UserName=aaa的纪录,可却查询不出来。(UserName在数据库中为varchar)
这个是什么原因啊?
谢谢   回复  引用  查看    

#38楼 [楼主] 2006-09-12 23:41 Teddy's Knowledge Base      

@Steveson[匿名]
照理是不会如此的。你可以给Gateway.SetSqlLogger设置一个SqlLogger,看看运行时生成的Sql是否有问题,可以在查询分析器里直接执行这个生成的sql查看运行结果。   回复  引用  查看    

#39楼  2006-09-13 17:12 Steveson      

Teddy:
在page的构造函数中:
this.PreRender += new EventHandler(RefreshPage_PreRender);

private void RefreshPage_PreRender(object sender, EventArgs e)
{
Page.ClientScript.RegisterHiddenField("refreshCount", "3");
}
可以正常的讲HiddenField写在页面上,
而一旦调用到ajax的话,就无效了,调试了一下,ajax是不调用PreRender的,
请问Ajax中应该在哪里写HiddenField啊?   回复  引用  查看    

#40楼 [楼主] 2006-09-13 17:21 Teddy's Knowledge Base      

@Steveson
本质上讲,你的这个服务段代码就是王页面添加一个hiddenfield,所以,你可以通过客户端脚本来添加。

不过,如果你一定要在服务端添加的话,需要重载ICallbackEventHandler接口的方法,这个接口定义了在ajax回调时被自动被调用的方法。

不过NBear.Web.UI.Page本来就实现了该接口的,如果你要重写他的话,别忘了在重写版本中包含对base.XXX()版本的函数的调用。   回复  引用  查看    

#41楼  2006-09-14 10:54 Steveson      

Teddy:
Page中有OnPreRender,
而ajax有没有对应的方法啊,
我将Page.ClientScript.RegisterHiddenField添加在了ICallbackEventHandler接口的方法中,
在页面上看不到要添加的hiddenfield。
这是为什么?   回复  引用  查看    

#42楼  2006-09-14 11:44 菌哥      

支持视频!
还想说的是,Demo太简单了,最好有个接近真实的demo,集成数据库方面的查询,多表查询,级联更新,如何使用存储过程的细节,比如从存储过程返回值,还有就是异常处理,日志处理等比较完整的demo.
或许要求太高了,呵呵   回复  引用  查看    

#43楼 [楼主] 2006-09-14 21:55 Teddy's Knowledge Base      

@Steveson
实际上内部的ajax实现使用的是标准的ASP.NET2.0的Callback机制,所以,你最好先了解一下Callback的原理,这样可能对你理解为什么得不到想要的结果更有帮助。可以参考下面这篇文章:
http://www.cnblogs.com/teddyma/archive/2005/11/28/286196.html

ICallbackEventHandler接口的方法中可以执行服务端代码,但是,这个接口的方法是不会直接影响页面的内容的。实际上,当callback时,ICallbackEventHandler接口只返回回调函数返回的内容,也就是客户端onComplete脚本可以处理的内容,不会重复返回页面上的其它内容。所以,你的这个输出一个hiddenfield的功能,此时,实际上只能通过客户端脚本来添加。   回复  引用  查看    

#44楼  2006-09-15 07:14 菌哥      

@Teddy
如果NBear整合atlas就好了   回复  引用  查看    

#45楼  2006-09-15 09:09 Lukiya [未注册用户]

最好Entity Generator能官方提供记录连接字符串功能,每次都要自己去改,麻烦死了。   回复  引用    

#46楼  2006-09-15 10:43 maoshaxu [未注册用户]

有没用VS2005编译的?
VSTS有些库VS2005没有。。。郁闷。
项目NBear.Test无法加载。   回复  引用    

#47楼  2006-09-15 10:44 maoshaxu [未注册用户]

补充一下:
觉得这个框架做的很好,感谢你的开源。最近准备在项目中运用NB。   回复  引用    

#48楼  2006-09-20 13:29 gassnake [未注册用户]

FLASH到后面(大约六分之一的样子),就只有声音没有图像了   回复  引用    

#49楼  2006-09-21 07:37 菌哥      

强烈建议在论坛里讨论,这样话题比较集中,也容易找   回复  引用  查看    

#50楼 [楼主] 2006-09-21 07:56 Teddy's Knowledge Base      

@菌哥
谢谢你的建议,我会联系下dudu,看看它能不能支援一个专门的论坛讨论区。原来的community里有一个板块的,但是现在community论坛似乎暂时被关闭了。   回复  引用  查看    

#51楼  2006-09-27 09:03 xuhoudao [未注册用户]

园主有没计划出SDK文档呢?   回复  引用    

#52楼 [楼主] 2006-09-27 10:16 Teddy's Knowledge Base      

@xuhoudao

谢谢你的建议~~

目前的beta阶段,因为主要的接口相对来讲还比较简单,看用户手册对用户来讲可能效果更好,而且,代码是有改动,维护一个效果不明显SDK文档意义不大。不过发布第一个stable版的时候我会提供SDK文档。   回复  引用  查看    

#53楼  2006-09-29 14:29 effun [未注册用户]

看到你的东西我很意外,或者说非常惊奇。
因为我也正在做一个类似的组件,并且也想将它命名为Teddy,哪知道GOOGLE一搜竟然找到这里来了,真的太巧了。
粗粗看了一下你的视频,我认为我的思路和你的真是太像了,只是你考虑得比我要全面得多,所以我想大家可以多多交流。
我做的DPL(估且叫这个名称)目前只适用于.net 2.0和sql 2005,之前花了一个星期时间,初步完成了数据访问层的工作,实体的CRUP功能已经可以使用了。和你不一样的是,我使用的并不是事先定义好的SQL语句,而是动态生成。
因为工程还不完善,我暂时没办法拿出来,等过两天包装好我再提供下载。
我的工程将会在我自己的网站上发布,网址是http://www.codersky.com/,估计在国庆这两天就可以放上去了。   回复  引用    

#54楼  2006-09-29 17:56 creation_zy [未注册用户]

正在可自动推理、生成、验证的超语言架构下实现OR Mapping,感谢您的工作!

用智慧改变世界!   回复  引用    

#55楼  2006-10-09 14:07 陈欠扁      

@Teddy's Knowledge Base
个人认为语音好点,学起来轻松点   回复  引用  查看    

#56楼  2006-10-31 15:05 zzy2740 [未注册用户]

刚好一个新项目,赶上用了Nbear ,正当用得非常爽的时候,发现一个问题,
Single 是一个视图实体,两个表组成的简单视图.
SportGameEntities.Single[] datas = Gateways.SportGame.SelectAll<SportGameEntities.Single>(100,2);

这样的方法进行分页,居然在第二页之后返回的结果数都是0.我是asp.net 2.0+SQL2K 下测试的,,后来,我在SQL2005下面便是正常,,我反复测试,发现虽然我用了sql 2K 但是分页程序还是调用了2005里面的,,这是怎么回事呢??? 快点救救我!!
  回复  引用    

#57楼 [楼主] 2006-10-31 15:10 Teddy's Knowledge Base      

@zzy2740
如果使用Sql2K,connectionstring那里的provider要设成SqlServer,对于Sql2K5,provider应设为SqlServer9。   回复  引用  查看    

#58楼  2006-10-31 15:18 zzy2740 [未注册用户]

是的,我是用的 SqlServer 但是我说的这问题确实存在,我已经反复测试过..sql 2K下面的视图分页,返回不了正确的数据集,,,   回复  引用    

#59楼 [楼主] 2006-10-31 15:23 Teddy's Knowledge Base      

还有一个可能是你没有正确设置视图的PrimaryKey,需要为pk字段的设置PrimaryKey这个Attribute。   回复  引用  查看    

#60楼  2006-10-31 15:30 zzy2740 [未注册用户]

因为我和一个同事都在用NBear 开发两个项目,他的是用SQL9 ,我们讨论了很久,开始以为也是PrimaryKey 的问题(开始确实没有),后来加上后,还是同样,第二页后返回的结果数,还是0.... 你可以写一个很简单的demo测试一下看看,,   回复  引用    

#61楼 [楼主] 2006-10-31 15:36 Teddy's Knowledge Base      

@zzy2740
谢谢你们的支持。事实上view得分页是很常见的操作,我肯定是经过测试的,我也不能确定你为什么就返回0。获取你可以发一个能运行的出错的示例代码,我来找找原因。   回复  引用  查看    

#62楼  2006-10-31 15:53 zzy2740 [未注册用户]

太感谢了,我把DEMO发到你的了邮箱:shijie.ma@gmail.com

再次感谢!   回复  引用    

#63楼  2006-10-31 17:51 zzy2740 [未注册用户]

Teddy 我重发了邮件,收到了吗?   回复  引用    

#64楼  2007-02-09 08:33 尧尧      

0.1 NBear类库结构及功能简介[发布时间:9/5] 下载(点击鼠标右键另存为)
这段最后10分钟放不出来   回复  引用  查看    

#65楼  2007-02-13 11:57 gangleader [未注册用户]

能提供oracle的demo吗?   回复  引用    

#66楼  2007-07-23 11:12 戏水      

怎么都不能下载呢?   回复  引用  查看    

#67楼  2007-08-30 08:11 桂圆      

@Teddy


下载链接都失效了啊
望更正
谢谢   回复  引用  查看    

#68楼  2007-09-18 19:20 打工仔 [未注册用户]

我已,头发花白,牙齿掉光,还下一个不能下   回复  引用    

#69楼  2007-10-19 17:57 wood [未注册用户]

连接失效了

  回复  引用    

#70楼  2008-01-26 10:16 王立斌      

我这里根本下载不了,我们公司正准备用nbear开发,缺乏这方面的软件,希望能够紧急提供下这方面的教程.   回复  引用  查看    

#71楼  2008-03-03 14:32 wangweifdagaweafsafdsaf [未注册用户]

@idealshan@gmail.com
  回复  引用    

#72楼  2008-03-05 23:33 yangslov [未注册用户]

视频无法下载啊
地址不正确,能不能发给我一份啊,麻烦了
ly6217@163.com   回复  引用