nhibernate-mapping-2.2">这段代码就是使用NHibernate必须有的代码,定义了NHibernate的版本信息。
2,name定义了所要映射的类,table定义了要映射的数据库中的表,lazy定义了是否要延迟加载,如果是默认值的话lazy=”true”,是延迟加载,这样的话需要在定义的类字段中加入Virtual,而lazy=”true”则不用延迟加载,立即执行。
并且类字段中可写可不写。
3
id>
这段代码的作用是被映射的类必须定义对应数据库的表主键字段,name标识属性的名字,Type标识Hibernate类型的名字,column标识主键的名字,这三个属性都是可选的,
可选的generator子元素是一个Java类的名字,用来为该持久化类的实例生成唯一的标识,如果这个生成器实例需要某些配置值或者初始化参数,用param元素来传递。
class=”assigned”的意思就是让应用程序在save(之前为对象分配一个表示符,这是generator元素没有指定时的默认生成策略。
4
3.第三步MVC中建立项目,引入命名空间
(1在MVC项目下面添加文件夹DLL,将我们需要的一些NHibernate的dll(文件类库添加到这里,供我们引用。
如图所示:
4.第四步实现Model层的逻辑
(1然后操作MVC层的Model层实现的功能如下:
先在Model层地下建立2个文件夹和一个类,在各个文件夹下面在建立自己的类,建立完成之后如图所示:
然后编程实现各个类中的功能,我们每个类的代码都说一遍。
1操作接口类IUsers,在这里就需要引入命名空间usingCOM.Entities;,代码如下:
publicinterfaceIUsers//定义接口类IUsers
{
///获取所有的用户
ListGetAll(;
///更新用户
boolUpdateUser(Usersu;
///添加用户
boolAddUser(Usersu;
///删除用户
boolDelUser(Usersu;
///使用唯一的标识查询实体集
///
///标识
UsersSelOne(stringid;
}
2接下去来在MockModel文件夹下面的UserServices类中实现IUsers接口类的方法,需要用到NHibernate,所以引入操作NHibernate的命名空间及代码:
usingNHibernate实现简单的增删改查.Models.Interfaces;
usingCOM.Entities;
usingNHibernate.Cfg;
usingNHibernate;
usingSystem.Collections;
//NHibernate操作数据库的地方
publicclassUsersService:
IUsers
{
//获得所有的用户信息
publicListGetAll(
{
varcfg=newConfiguration(;
cfg.AddAssembly("COM.Entities";
ISessionFactoryfactory=cfg.BuildSessionFactory(;
ISessionsession=factory.OpenSession(;
IListuserList=session.CreateCriteria(typeof(Users.List(;
Listlist=newList(;
foreach(UsersiteminuserList
{
list.Add(item;
}
returnlist;
}
//更新用户
publicboolUpdateUser(Usersu
{
varcfg=newConfiguration(;
cfg.AddAssembly("COM.Entities";
ISessionFactoryfactory=cfg.BuildSessionFactory(;
ISessionsession=factory.OpenSession(;
UserseUsers=(Userssession.Load(typeof(Users,u.LogonId;
//使用事务来操作数据库
ITransactiontransaction=session.BeginTransaction(;
eUsers.Name=u.Name;
eUsers.Password=u.Password;
eUsers.EmailAddress=u.EmailAddress;
eUsers.LastLogon=DateTime.Now;
transaction.Commit(;
session.Flush(;//清理缓存,执行SQL
returnfalse;
}
//删除用户
publicboolDelUser(Usersu
{
varcfg=newConfiguration(;
cfg.AddAssembly("COM.Entities";//程序集的添加
ISessionFactoryfactory=cfg.BuildSessionFactory(;
ISessionsession=factory.OpenSession(;
ITransactiontransaction=session.BeginTransaction(;
session.Delete(u;
transaction.Commit(;
session.Flush(;
returntrue;
}
//添加用户
publicboolAddUser(Usersu
{
try
{
varcfg=newConfiguration(;
cfg.AddAssembly("COM.Entities";
ISessionFactoryfactory=cfg.BuildSessionFactory(;
ISessionsession=factory.OpenSession(;
ITransactiontransaction=session.BeginTransaction(;
session.Save(u;
transaction.Commit(;
session.Close(;
returntrue;
}
catch
{
returnfalse;
}
}
///使用唯一标识查询实体
///标识ID
///返回Users实体
publicUsersSelOne(stringid
{
varcfg=newConfiguration(;
cfg.AddAssembly("COM.Entities";
ISessionFactoryfactory=cfg.BuildSessionFactory(;
ISessionsession=factory.OpenSession(;
varu=(Userssession.Load(typeof(Users,id;//session.Load(根据指定的实体类或者ID从数据库中读取数据并返回与之对应的实体对象
returnu;
}
}
3最后实现ServiceBuilder.cs类的方法使其能够返回UserService类的方法,引入命名空间和代码的编写如下:
usingNHibernate实现简单的增删改查.Models.Interfaces;
usingNHibernate实现简单的增删改查.Models.MockModels;
publicsealedclassServiceBuilder//sealed修饰符可以应用于类、实例方法和属性。
密封类不能被继承。
密封方法会重写基类中的方法,但其本身不能在任何派生类中进一步重写。
{
publicstaticIUsersBuildUsersService(
{
returnnewUsersService(;
}
}
5.第五步实现MVC层的HomeController类
(1接下来实现MVC三层架构中的Controler层的业务逻辑,在HomeControler类中引入命名空间和代码是:
usingNHibernate实现简单的增删改查.Models.Interfaces;
usingNHibernate实现简单的增删改查.Models;
usingCOM.Entities;
[HandleError]
publicclassHomeController:
Controller
{
publicActionResultIndex(
{
IUsersiuser=ServiceBuilder.BuildUsersService(;
ViewData["UsersInfor"]=iuser.GetAll(;
returnView("Index";
}
publicActionResultOperationUser(
{
StringtextId=Request.Form["Text_ID"];
StringtextUserName=Request.Form["Text_UserName"];
StringtextPassword=Request.Form["Text_Password"];
StringemailAddress=Request.Form["Text_EmailAddress"];
DateTimelastLogon=DateTime.Now;
stringoperationT=Request.Form["operationT"];
varu=newUsers
{
LogonId=textId,
Name=textUserName,
Password=textPassword,
EmailAddress=emailAddress,
LastLogon=lastLogon
};
IUsersiuser=ServiceBuilder.BuildUsersService(;
2010年全国高校市场营销大赛实施方案
为确保参加2010年全国高职高专市场营销案例大赛
{
ViewData[
全国高校市场营销大赛是由中国市场学会、教育部考试中心、教育部高等学校高职高专工商管理类专业教学指导委员会面向全国高职院校工商管理类大学生联合主办的营销实践技能竞赛活动。
二、参赛目的
else
{
ViewData["AddSuccess"]="No";
}
}
if(operationT.Equals(长:
郭荣森
{成员:
陈舒平(指导老师)、];
stringstrU="{'LogonId':
'"+rU.LogonId+"','Name':
'"+rU.Name+"','Password':
'"+rU.Password+"','EmailAddress':
'"
四、参赛具体工作安排
(一)学校预选赛日程安排
returnContent(strU;4月3
if(operationT.Equals("DelOne"
{
12日,向2008级市场开发与营销专业学生公布“2010
}
3、4月13日,各班组建参赛小组,并按要求提交分组名单iusersAll=ServiceBuilder.BuildUsersService(;
ViewData["UsersInfor"]=iusersAll.GetAll(;
returnView("Index";
}
对参赛队参赛作品提出初审意见和修改意见About(
5、4月20
}
}
6.第6步
(1最后修改配置文件Web.Config的代码如下: