现在我有两张表,User 和 Area  我在建立数据库的时候不建立两张表的FK约束,我想在代码中实现两张表的关联,如何实现?  比如我要将用户信息展示在登录后的页面上面  但是我发现我怎么也获取不到AreaId这个值(前提是这两个表没有建立关联,但是我在设计实体类的时候User表中有个字段Area)  //用户表
public class User
    {
        public User() { }        private string userId;        public string UserId
        {
            get { return userId; }
            set { userId = value; }
        }
        private string name;        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        private string passWord;        public string PassWord
        {
            get { return passWord; }
            set { passWord = value; }
        }
        //用户权限
        private string limitLevel;        public string LimitLevel
        {
            get { return limitLevel; }
            set { limitLevel = value; }
        }
        private Area area; //= new Area();//FK        public Area Area
        {
            get 
            {
                area = new Area();
                return area; 
            }
            set { area = value; }
        }    } 
//地区表    public class Area
    {
        public Area() { }        //地区代码
        private string areaId;        public string AreaId
        {
            get { return areaId; }
            set { areaId = value; }
        }        //地区名称
        private string areaName;        public string AreaName
        {
            get { return areaName; }
            set { areaName = value; }
        }
    }
//页面后台代码
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<table style="width:100%" cellspacing="1" class="style_table" align="center">
<tr>
<td class="style6" style="height:30px; font-size: large; font-weight: bold;">帐号信息</td>
</tr>
<tr>
<td class="style8">
<table style="width: 100%" cellspacing="1" class="style9">
<tr>
<td class="style7" style="width: 221px">帐号:</td>
<td class="style7" style="width: 221px">
                        <asp:Label ID="lblUserId" runat="server" Text=""></asp:Label></td>
</tr>
<tr>
    <td class="style7" style="width: 221px">所属地区:</td>
    <td class="style7" style="width: 221px">
                        <asp:Label ID="lblAreaId" runat="server" Text=""></asp:Label></td>
</tr>
<tr>
<td class="style7" style="width: 221px">姓名:</td>
<td class="style7" style="width: 221px">
                        <asp:Label ID="lblName" runat="server" Text=""></asp:Label></td>
</tr>
<tr>
    <td  class="style7" colspan="2" style="width: 221px; padding-left:590px">
    【<asp:HyperLink ID="hlEditPwd" runat="server" NavigateUrl="~/change_pwd.aspx">修改密码</asp:HyperLink>】</td>
</tr>
</table>
</td>
</tr>
</table>
    </asp:Content>

解决方案 »

  1.   

    将用户控件的后台代码贴出来啊?你的User实体类只是你的表现而已,具体的表字段里面,需要有两个表关联的依据,要不然你怎么根据某个UserId来获取相应的Area记录,你说你的User表中有Area字段,可是根据Area字段并不能指定某条Area表的记录表是表,实体类是实体类
      

  2.   

    你可以不做FK约束,但是User表里需要有一个AreaId字段,来表明某一条Area记录
      

  3.   

    public Area Area
            {
                get 
                {
                    area = new Area();
                    return area; 
                }
                set { area = value; }
            }你只new Area(),当然什么也没有。。至少,你应该new Area()的时候根据用户ID查询出区域吧。
      

  4.   


    ublic partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            
            if(!IsPostBack)
            {
                //User user = (User)Session["CurrentUser"];//获取登录信息
                //Response.Write("<script>alert('" + user + "')</script>");
                DisplayInfor();
            }
        }    protected void DisplayInfor()
        {
            User user = new User();
            if (Session["CurrentUser"] == null)
            {
                Response.Redirect("~/login.aspx");
            }
            user = (User)Session["CurrentUser"];
            this.lblUserId.Text = user.UserId;
            this.lblAreaId.Text = user.Area.AreaName;
            //Response.Write("<script>alert('" + user.Area.AreaName + "')</script>");
            this.lblName.Text = user.Name;
        }