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

推荐订阅源

T
Tenable Blog
Last Week in AI
Last Week in AI
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
H
Help Net Security
F
Fortinet All Blogs
MyScale Blog
MyScale Blog
宝玉的分享
宝玉的分享
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 司徒正美
量子位
N
Netflix TechBlog - Medium
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
Recorded Future
Recorded Future
博客园 - 三生石上(FineUI控件)
Vercel News
Vercel News
aimingoo的专栏
aimingoo的专栏
I
InfoQ
Microsoft Security Blog
Microsoft Security Blog
Scott Helme
Scott Helme
The Last Watchdog
The Last Watchdog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
IT之家
IT之家
AI
AI
WordPress大学
WordPress大学
Security Archives - TechRepublic
Security Archives - TechRepublic
Google Online Security Blog
Google Online Security Blog
U
Unit 42
V2EX - 技术
V2EX - 技术
MongoDB | Blog
MongoDB | Blog
Schneier on Security
Schneier on Security
博客园 - Franky
H
Heimdal Security Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Jina AI
Jina AI
W
WeLiveSecurity
P
Privacy & Cybersecurity Law Blog
Cloudbric
Cloudbric
B
Blog RSS Feed
N
News | PayPal Newsroom
S
Securelist
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
I
Intezer
Hacker News - Newest:
Hacker News - Newest: "LLM"
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
博客园_首页
罗磊的独立博客
H
Hackread – Cybersecurity News, Data Breaches, AI and More
雷峰网
雷峰网

博客园 - 老公鸡

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();

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