Spring1NET+到Nhibernate到精通.docx
- 文档编号:6668118
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:50
- 大小:193.95KB
Spring1NET+到Nhibernate到精通.docx
《Spring1NET+到Nhibernate到精通.docx》由会员分享,可在线阅读,更多相关《Spring1NET+到Nhibernate到精通.docx(50页珍藏版)》请在冰豆网上搜索。
Spring1NET+到Nhibernate到精通
回到Spring.NET&NHibernateofC#.NET技术论坛
实战C#.NET编程----Spring.NET&NHibernate从入门到精通
您可以从以下网址下载最新版:
本文中的源代码下载地址:
作 者:
李绿华(WilliamLee)
制作时间:
2006-11-30
版本号:
V0.50
版权声明:
未经作者本人许可,任何公司、团体、个人都不得以任何方式复制或抄袭本文内容的部分或全部。
转载本文请通过以下方式联系作者获得许可。
邮件:
it1630@
目录
实战C#.NET编程----Spring.NET&NHibernate从入门到精通--1
第一章VisualC#.NET入门指南--3
一、 C#简介--3
二、 使用VisualStudio开始C#项目--3
步骤1.开始项目--4
步骤2.Hello,World!
-5
步骤3.程序结构--7
步骤4.控制台输入--8
步骤5.使用数组--9
步骤6.文件输入/输出--10
步骤7.创建函数--13
步骤8.使用调试器--15
小结--17
第二章面向对像ORM-18
一、 什么是ORM-18
二、 为什么需要ORM-19
三、 流行的ORM框架简介--19
第三章Spring.NET入门--20
一、 Spring.NET概览--20
二、 第一个Spring.NET的程序--22
第四章NHibernate入门--25
一、 什么是Nhibernate-25
二、 Nhibernate概述--25
三、 第一个NHibernate程序--28
第五章Spring.NET与NHibernate的整合--34
一、 建立新的项目(SpringNHibernateSample)-35
二、 添加NHibernate程序--35
三、 添加Spring.NET的程序--35
四、 添加Spring.NET为NHibernate的容器配置--38
五、 编写测试程序代码--41
六、 测试并查看结果--43
第六章深入Spring.NET与NHibernate开发--43
第七章项目实战----办公自动化系统--43
第八章结束语--43
第一章VisualC#.NET入门指南
一、 C#简介
VisualC#.NET是VisualStudio系列中的最新成员。
这种新语言基于C/C++,但它深化了更容易地使用面向组件编程的发展方向。
C/C++程序员应该非常熟悉它的语法。
下面的示例应用程序示范了如何构建一个简单的实现QuickSort算法的C#项目。
它包括了C#程序的基本组成部分:
读/写控制台和文件、创建函数和使用基本数组。
这些入门指南并不打算涵盖该编程语言的所有方面。
它们只是您探索这种语言的一个起点。
我们鼓励您按照本教程的说明执行,因为它包括了QuickSort应用程序的各个不同部分。
您还可以获得完整的源代码和项目文件。
建议的要求
编译此示例应用程序需要VisualStudio.NET2003/2005。
关于C/C++的知识是有帮助的但不是必需的。
二、 使用VisualStudio开始C#项目
VisualC#.NET入门指南通过实现一个简单的QuickSort算法,带您领略如何构建VisualC#.NET项目。
本节将按以下的步骤让大家一步一步了解VisualC#:
⏹ 步骤1.开始项目
⏹ 步骤2.Hello,World!
⏹ 步骤3.程序结构
⏹ 步骤4.控制台输入
⏹ 步骤5.使用数组
⏹ 步骤6.文件输入/输出
⏹ 步骤7.创建函数
⏹ 步骤8.使用调试器
⏹ 小结
你可以下载Quicksort_Visual_CSharp_.NET.exe。
里面包含了下面的代码。
步骤1.开始项目
VisualStudio中的开发工作以解决方案的形式进行组织,每个解决方案包含一个或多个项目。
在本教程中,我们创建的解决方案包含一个C#项目。
⏹ 创建一个新项目
在VisualStudio.NET环境中,从菜单中选择File|New|Project。
在左侧选择VisualC#Projects,然后在右侧选择ConsoleApplication。
指定项目的名称,然后输入创建项目的位置。
VisualStudio会自动创建项目目录。
单击OK,那么现在就正式开始了
⏹ VisualC#解决方案
VisualStudio.NET已经创建了含有一个简单VisualC#项目的解决方案。
该项目包含两个文件:
assemblyinfo.cs和class1.cs。
接下来的几步骤将讨论这些不同的文件以及如何编译该项目。
步骤2.Hello,World!
很遗憾,但我们仍然无法抵御这种诱惑……我们还是不得不完成一个基于C#的经典"Hello,World!
"应用程序,这个应用程序最初是用C语言编写的。
⏹ 修改源代码
在SolutionExplorer中双击文件"class1.cs"。
可以通过"View"菜单来显示SolutionExplorer。
更改预生成的模板(class1.cs),如下面以斜体突出显示的代码所示。
usingSystem;
namespacequicksort
{
///
///SummarydescriptionforClass1.
///
classClass1
{
staticvoidMain(string[]args)
{
//
//TODO:
Addcodetostartapplicationhere
//
Console.WriteLine("Hello,C#.NETWorld!
");
}
}
}
注意,当您键入代码时,VisualStudio将为您提示类和函数的名称(因为.NET框架发布了这种类型信息)。
⏹ 编译应用程序
既然您已经完成了修改,就可以通过在Build菜单中简单地选择Build来编译VisualC#项目。
来自C#编译器的错误和消息会在Output窗口中显示。
如果没有错误,则可以通过单击Debug菜单下的StartwithoutDebugging来运行HelloWorld应用程序。
⏹ 程序输出
在VisualC#中运行HelloWorld示例应用程序时,输出结果的屏幕截图如下:
⏹ 理解更改
System.Console类的WriteLine()函数打印传递给它的字符串,其后紧跟一行新的字符。
此函数可以接受许多其他数据类型(包括整型和浮点型)的参数。
在程序加载完成后,控制就传递给Main()函数。
这就是我们在该过程中插入对WriteLine()调用的原因。
步骤3.程序结构
既然我们已经构建了一个简单的HelloWorld应用程序,那么就让我们停下来分析一下VisualC#应用程序的基本组成部分。
⏹ 源代码注释
字符“//”将行的剩余部分标记为一个注释,这样C#编译器就会忽略它。
另外,/*和*/之间的代码也会被当作注释。
//Thislineisignoredbythecompiler.
/*Thisblockoftextisalso
ignoredbytheVisualC#compiler.*/
⏹ Using指令
.NET框架为开发人员提供了许多有用的类。
例如,Console类处理对控制台窗口的输入和输出。
这些类是按照层次树的形式组织的。
Console类的完全限定名实际上是System.Console。
其他的类包括System.IO.FileStream和System.Collections.Queue。
using指令允许您在不使用完全限定名的情况下引用命名空间中的类。
以斜体突出显示的代码应用了using指令。
usingSystem;
classClass1
{
staticvoidMain(string[]args)
{
System.Console.WriteLine("Hello,C#.NETWorld!
");
Console.WriteLine("Hello,C#.NETWorld!
");
}
}
⏹ 类声明
与C++或VisualBasic不同,VisualC#中的所有函数都必须封装在一个类中。
class语句声明一个新的C#类。
就HelloWorld应用程序来说,Class1类包含一个函数,即Main()函数。
如果用一个namespace块将类的定义括起来,就可以把类组织为诸如MsdnAA.QuickSortApp这样的层次。
在本入门指南中,我们并不打算深入地介绍类,但是我们将为您简要概述为什么类是我们的示例应用程序的一部分。
⏹ Main()函数
在应用程序加载到内存之后,Main()函数就会接收控制,因此,应该将应用程序启动代码放在此函数中。
传递给程序的命令行参数存储在args字符串数组中。
步骤4.控制台输入
现在,我们将继续编写QuickSort应用程序。
我们需要做的第一件事就是提示用户提供输入和输出文件。
⏹ 修改源代码
更改C#源文件(class1.cs),如下面以斜体突出显示的代码所示。
其他的差异(如类名)可忽略不计。
//Importnamespaces
usingSystem;
//Declarenamespace
namespaceMsdnAA
{
//Declareapplicationclass
classQuickSortApp
{
//Applicationinitialization
staticvoidMain(string[]szArgs)
{
//Describeprogramfunction
Console.WriteLine("QuickSortC#.NETSampleApplication\n");
//Promptuserforfilenames
Console.Write("Source:
");
stringszSrcFile=Console.ReadLine();
Console.Write("Output:
");
stringszDestFile=Console.ReadLine();
}
}
}
⏹ 从控制台进行读取
Console类的ReadLine()方法提示用户输入,并返回输入的字符串。
它会自动地为字符串处理内存分配,由于使用了.NET垃圾回收器,您不需要做任何释放内存的工作。
⏹ 程序输出
从菜单中选择Debug|StartWithoutDebugging来运行程序。
这是到此为止来自QuickSort应用程序的输出的屏幕截图。
步骤5.使用数组
在对从输入读取的行进行排序之前,程序需要将其存储到一个数组中。
我们将简要讨论可实现对象数组的.NET基类的用法。
⏹ 修改源代码
更改C#源文件(class1.cs),如下面以斜体突出显示的代码所示。
其他的差异(如类名)可忽略不计。
//Importnamespaces
usingSystem;
usingSystem.Collections;
//Declarenamespace
namespaceMsdnAA
{
//Declareapplicationclass
classQuickSortApp
{
//Applicationinitialization
staticvoidMain(string[]szArgs)
{
//Describeprogramfunction
Console.WriteLine("QuickSortC#.NETSampleApplication\n");
//Promptuserforfilenames
Console.Write("Source:
");
stringszSrcFile=Console.ReadLine();
Console.Write("Output:
");
stringszDestFile=Console.ReadLine();
//TODO:
Readcontentsofsourcefile
ArrayListszContents=newArrayList();
}
}
}
⏹ 使用ArrayList类
我们将导入System.Collections命名空间,这样我们就可以直接引用ArrayList。
此类实现大小可动态调整的对象数组。
要插入新的元素,可以简单地将对象传递到ArrayList类的Add()方法。
新的数组元素将引用原始的对象,而垃圾回收器将处理它的释放。
stringszElement="insert-me";
ArrayListszArray=newArrayList();
szArray.Add(szElement);
要检索现有的元素,请将所需元素的索引传递给Item()方法。
另外,作为一种简写形式,还可以使用方括号operator[],它实际上映射到Item()方法。
Console.WriteLine(szArray[2]);
Console.WriteLine(szArray.Item
(2));
ArrayList类中还有许多其他方法,但是插入和检索都是我们需要在此示例中使用的。
请查阅MSDN库以获得完整的参考指南。
步骤6.文件输入/输出
现在,让我们来实现读取输入文件和写入输出文件。
我们将每一行读取到一个字符串数组中,然后输出该字符串数组。
在下一步中,我们将使用QuickSort算法来对该数组进行排序。
⏹ 修改源代码
更改C#源文件(class1.cs),如下面以斜体突出显示的代码所示。
其他的差异(如类名)可忽略不计。
//Importnamespaces
usingSystem;
usingSystem.Collections;
usingSystem.IO;
//Declarenamespace
namespaceMsdnAA
{
//Declareapplicationclass
classQuickSortApp
{
//Applicationinitialization
staticvoidMain(string[]szArgs)
{
.........
//Readcontentsofsourcefile
stringszSrcLine;
ArrayListszContents=newArrayList();
FileStreamfsInput=newFileStream(szSrcFile,FileMode.Open,
FileAccess.Read);
StreamReadersrInput=newStreamReader(fsInput);
while((szSrcLine=srInput.ReadLine())!
=null)
{
//Appendtoarray
szContents.Add(szSrcLine);
}
srInput.Close();
fsInput.Close();
//TODO:
PasstoQuickSortfunction
//Writesortedlines
FileStreamfsOutput=newFileStream(szDestFile,
FileMode.Create,FileAccess.Write);
StreamWritersrOutput=newStreamWriter(fsOutput);
for(intnIndex=0;nIndex { //Writelinetooutputfile srOutput.WriteLine(szContents[nIndex]); } srOutput.Close(); fsOutput.Close(); //Reportprogramsuccess Console.WriteLine("\nThesortedlineshavebeenwritten.\n\n"); } } } ⏹ 从源文件进行读取 使用FileStream类打开源文件,然后加入StreamReader类,这样我们就可以使用它的ReadLine()方法了。 现在,我们调用ReadLine()方法,直到它返回null,这表示到达文件结尾。 在循环过程中,我们将读取的行存储到字符串数组中,然后关闭这两个对象。 ⏹ 写入输出文件 假设已经用QuickSort对字符串数组进行了排序,接下来要做的事情就是输出数组的内容。 按照同样的方式,我们将StreamWriter对象附加到FileStream对象上。 这使得我们可以使用WriteLine()方法,该方法能够很方便地模仿Console类的行为。 一旦遍历了数组,我们便可以象前面一样关闭这两个对象。 步骤7.创建函数 最后一步就是创建一个函数来在字符串数组中运行QuickSort。 我们将此函数放到应用程序类QuickSortApp之中。 ⏹ 修改源代码 更改C#源文件(class1.cs),如下面以斜体突出显示的代码所示。 其他的差异(如类名)可忽略不计。 //Importnamespaces usingSystem; usingSystem.Collections; usingSystem.IO; //Declarenamespace namespaceMsdnAA { //Declareapplicationclass classQuickSortApp { //Applicationinitialization staticvoidMain(string[]szArgs) { ......... //PasstoQuickSortfunction QuickSort(szContents,0,szContents.Count-1); ......... } //QuickSortimplementation staticvoidQuickSort(ArrayListszArray,intnLower,intnUpper) { //Checkfornon-basecase if(nLower { //Splitandsortpartitions intnSplit=Partition(szArray,nLower,nUpper); QuickSort(szArray,nLower,nSplit-1);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Spring1NET Nhibernate 精通
![提示](https://static.bdocx.com/images/bang_tan.gif)