组件: 类似于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();
就像是有一个外键关系一样,那么,下一篇我们看看外键如何处理
浙公网安备 33010602011771号