组件: 类似于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 { get ; set ; }
// public virtual string U_name { get; set; }
// public virtual string U_pwd { get; set; }
public virtual int R_id { get ; set ; }
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace llr.Models
{
[Serializable]
public class User
{
public virtual int Id { get ; set ; }
// public virtual string U_name { get; set; }
// public virtual string U_pwd { get; set; }
public virtual int R_id { get ; set ; }
}
}
2. 为这个合并列创建一个实体类
using
System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace llr.Models
{
public class LoginInfo
{
public virtual string U_name { get ; set ; }
public virtual string U_pwd { get ; set ; }
public string LogInfo
{
get {
return U_name + U_pwd;
}
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace llr.Models
{
public class LoginInfo
{
public virtual string U_name { get ; set ; }
public virtual string U_pwd { get ; set ; }
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 { get ; set ; }
// public virtual string U_name { get; set; }
// public virtual string U_pwd { get; set; }
public virtual int R_id { get ; set ; }
public virtual LoginInfo LogInfo { get ; set ; }
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace llr.Models
{
[Serializable]
public class User
{
public virtual int Id { get ; set ; }
// public virtual string U_name { get; set; }
// public virtual string U_pwd { get; set; }
public virtual int R_id { get ; set ; }
public virtual LoginInfo LogInfo { get ; set ; }
}
}
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 >
<!-- 设置其它字段 第一个为属性名就是实体类里面的属性名 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();
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();
就像是有一个外键关系一样,那么,下一篇我们看看外键如何处理