zoukankan      html  css  js  c++  java
  • Nhibernate学习起步之manytoone篇

    1.     学习目的:

    通过进一步学习nhibernate基础知识,在实现单表CRUD的基础上,实现两表之间one-to-many的关系.

    2.     开发环境+必要准备

    开发环境: windows 2003,Visual studio .Net 2005,Sql server 2005 developer edition

    必要准备: 学习上篇文章单表操作   

    3) 更改User.cs,User里面添加SalaryList属性:
    4)修改User.hbm.xml,加入bag节点
     5)编写类Salary的映射文件:Salary.hbm.xml

    Salary.hbm.xml
    6)编写CRUD
    UserSalaryFixure.cs
    7) 编写单元测试类:UnitTest1.cs
    UnitTest1.cs
    加载测试元数据,直到Test()通过。
    总结:通过进一步学习nhiberate,发现ORM框架真是非常强大。今天先到这里。明天继续。
    项目文件:
    /Files/jillzhang/simple2.rar  
    User.cs

    3. 对上篇文章中部分解释

     1)在User.hbm.xmlclass节点中有一个lazy的属性,这个属性用于指定是否需要延迟加载(lazy loading),在官方文档中称为:lazy fecting.可以说延迟加载是nhibernate最好的特点,因为它可以在父类中透明的加载子类集合,这对于many-to-one的业务逻辑中,真是方便极了。但是有些时候,父类是不需要携带子类信息的。这时候如果也加载,无疑对性能是一种损失。在映射文件的class节点中可以通过配置lazy属性来指定是否支持延迟加载,这就更灵活多了。 

     2) User.hbm.xmlgenerate节点,代表的是主键的生成方式,上个例子中的”native”根据底层数据库的能力选择identity,hilo,sequence中的一个,比如在MS Sql中,使我们最经常使用的自动增长字段,每次加1. 

    3) NHibernateHelper.cs中,创建Configuration对象的代码:new Configuration().Configure(@"E:/myproject/nhibernatestudy/simle1/NHibernateStudy1/NhibernateSample1/hibernate.cfg.xml")因为我是在单元测试中调试,所以将绝对路径的配置文件传递给构造函数。如果在windows app或者web app可以不用传递该参数。 

    4. 实现步骤

     1)确定实现的业务需求:用户工资管理系统

     2) 打开上篇文章中的NHibernateStudy1解决方案。向项目NhibernateSample1添加类Salary;代码如下

    Salary.cs

    User.hbm.xml

  • 相关阅读:
    在生成安装和部署项目时出现“Unrecoverable Build Error”(不可恢复的生成错误)错误信息
    SqlHelper(带详细中文注释)
    原创企业级控件库之大数据量分页控件
    MSSql技巧之快速得到表的记录总数
    ASP.NET 程序中常用的三十三种代码
    团队项目开发"编码规范"系列文章
    信息系统项目管理系列之二:项目生命期和组织
    原创企业级控件库之组合查询控件
    C# 中的常用正则表达式总结
    asp.net页面生存周期
  • 原文地址:https://www.cnblogs.com/encounter/p/2188835.html
Copyright © 2011-2022 走看看