惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

U
Unit 42
博客园 - 司徒正美
V
Visual Studio Blog
博客园 - 【当耐特】
T
Tailwind CSS Blog
美团技术团队
博客园 - 叶小钗
Jina AI
Jina AI
宝玉的分享
宝玉的分享
IT之家
IT之家
Hugging Face - Blog
Hugging Face - Blog
雷峰网
雷峰网
Stack Overflow Blog
Stack Overflow Blog
博客园_首页
人人都是产品经理
人人都是产品经理
T
The Blog of Author Tim Ferriss
P
Proofpoint News Feed
Microsoft Security Blog
Microsoft Security Blog
Y
Y Combinator Blog
GbyAI
GbyAI
大猫的无限游戏
大猫的无限游戏
Martin Fowler
Martin Fowler
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
腾讯CDC

博客园 - 老公鸡

sharepoint 2010? Jsp中使用数据库连接池. MVC2 学习之 UrlRouting Oracle 基础学习之索引 Oracle基础学习之函数 Oracle 基本操作之sql语句 Oracle基本操作 Oracle 数据库学习一 小黑日记三 结束了 mvc 3 学习 第一天 准备 小黑 成长日记第二天 2011年6月15日,同事捡了一只小猫回来了 NHibernate 学习 第十二天 存储过程的使用 NHibernate 学习 第十一天 对多对的关系处理 NHibernate 学习 第十天 一对多的外键关系处理 NHibernate 学习 第九天 外键关系的处理之一对一 NHibernate学习 第七天 其它的学习资料 NHibernate学习 第六天 NHibernate 中的查询 NHibernate 学习第五天 用户表的增,删,改,查
NHibernate学习 第八天 组件的运用
老公鸡 · 2011-06-11 · via 博客园 - 老公鸡

组件: 类似于asp.net 里面的用户控件的作用, 指意是 需要将数据库里面的两个字段组合在一起组成一个新的属性出现,正见的是 FristName + LastName = FullName 这种操作

应该如何操作?

以Users表中的 U_name 与 U_pwd 两个字段为个案例,显然是不怎么恰当的

1. 首先要将原实体类里面的两个字段给去掉

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace llr.Models
{
    [Serializable]
    
public class User
    {
        
public virtual int Id { getset; }
        
//public virtual string U_name { get; set; }
        
//public virtual string U_pwd { get; set; }
        public virtual int R_id { getset; }
    }
}

2. 为这个合并列创建一个实体类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace llr.Models
{
   
public class LoginInfo
    {
        
public virtual string U_name { getset; }
        
public virtual string U_pwd { getset; }
        
public string LogInfo
        {
            
get{
                
return U_name + U_pwd;
            }
        }
    }
}

3. 将实体类作为一个属性加到 User.cs里面去

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace llr.Models
{
    [Serializable]
    
public class User
    {
        
public virtual int Id { getset; }
        
//public virtual string U_name { get; set; }
        
//public virtual string U_pwd { get; set; }
        public virtual int R_id { getset; }public virtual LoginInfo LogInfo { getset; }
    }
}

5. 修改User.hbm.xml 文件

<component name="LogInfo" class="llr.Models.LoginInfo,llr.Models">
      
<!-- 设置其它字段 第一个为属性名就是实体类里面的属性名 column 为数据库里面字段名  -->
      
<property name="U_name" column="u_name" not-null="false" type="string" length="10" />
      
<property name="U_pwd" column="U_pwd" not-null="false" type="string" length="10"/>
    
</component>

将原来设置两个字段映射的property属性上面再套上一个 component 标签  name :为User类中的属性名 

OK 。以后访问就这样子了

llr.Models.User u = new llr.Models.User();
        u.R_id 
= Convert.ToInt32(this.DropDownList1.SelectedValue);
        u.LogInfo 
= new LoginInfo();
        u.LogInfo.U_name 
= this.TextBox1.Text.Trim();
        u.LogInfo.U_pwd 
= this.TextBox2.Text.Trim();

就像是有一个外键关系一样,那么,下一篇我们看看外键如何处理