FastSpring学习笔记六(表关联)
一:新闻信息的表已经建立,并能顺利显示出来后,我们要对新闻信息进行分类,因此,我们现在来添加一个表:FS_PT_Class_Tree
 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_FS_PT_Announcement_FS_PT_Class_Tree]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_FS_PT_Announcement_FS_PT_Class_Tree]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[FS_PT_Announcement] DROP CONSTRAINT FK_FS_PT_Announcement_FS_PT_Class_Tree
ALTER TABLE [dbo].[FS_PT_Announcement] DROP CONSTRAINT FK_FS_PT_Announcement_FS_PT_Class_Tree GO
GO
 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FS_PT_Class_Tree]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FS_PT_Class_Tree]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[FS_PT_Class_Tree]
drop table [dbo].[FS_PT_Class_Tree] GO
GO
 CREATE TABLE [dbo].[FS_PT_Class_Tree] (
CREATE TABLE [dbo].[FS_PT_Class_Tree] ( [ClassID] [int] NOT NULL ,
    [ClassID] [int] NOT NULL , [ClassName] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [ClassName] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL , [ClassUrl] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
    [ClassUrl] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL , [Priority] [int] NOT NULL ,
    [Priority] [int] NOT NULL , [ParentID] [int] NOT NULL ,
    [ParentID] [int] NOT NULL , [IsActive] [int] NOT NULL
    [IsActive] [int] NOT NULL  ) ON [PRIMARY]
) ON [PRIMARY] GO
GO

| PT_Class_Tree:公告信息类别树 | ||
| ClassID | int | 类别标识 | 
| ClassName | varchar | 类别名称 | 
| ClassUrl | varchar | 类别链接 | 
| Priority | int | 排序的优先级 | 
| ParentID | int | 上级标识 | 
| IsActive | int | 激活 | 
二:使用学习笔记二中的方法,生成该表的Model和hbm文件。代码如下:(Class_Tree.cs文件代码)
 using System;
using System; using System.Data;
using System.Data; using System.Collections.Generic;
using System.Collections.Generic; using System.Text;
using System.Text; using FastSpring.Base.Model;
using FastSpring.Base.Model; using FastSpring.Core.Model;
using FastSpring.Core.Model; using FastSpring.Common;
using FastSpring.Common;
 using System.Collections;
using System.Collections;
 namespace DZ_Portal.App.Model
namespace DZ_Portal.App.Model
 ...{
...{
 /**//// <summary>
    /**//// <summary> ///
    ///     /// </summary>
    /// </summary> [Serializable]
    [Serializable] public sealed class Class_Tree: BaseVersionModel
    public sealed class Class_Tree: BaseVersionModel
 ...{
    ...{
 私有成员#region 私有成员
        私有成员#region 私有成员
 private bool m_IsChanged;
        private bool m_IsChanged; private bool m_IsDeleted;
        private bool m_IsDeleted; private int m_ClassID;
        private int m_ClassID; private string m_ClassName;
        private string m_ClassName; private string m_ClassUrl;
        private string m_ClassUrl; private int m_Priority;
        private int m_Priority; private int m_ParentID;
        private int m_ParentID; private int m_IsActive;
        private int m_IsActive; 
         //一对多关系:
        //一对多关系: private IList m_Announcement;
        private IList m_Announcement;

 #endregion
        #endregion

 GetEntityType()#region GetEntityType()
        GetEntityType()#region GetEntityType() public override Type GetEntityType()
        public override Type GetEntityType()
 ...{
        ...{ return typeof(Class_Tree);
            return typeof(Class_Tree); }
        } #endregion
        #endregion
 public override bool EqualsID(int ID)
        public override bool EqualsID(int ID)
 ...{
        ...{ return this.ClassID == ID;
            return this.ClassID == ID; }
        }

 默认( 空 ) 构造函数#region 默认( 空 ) 构造函数
        默认( 空 ) 构造函数#region 默认( 空 ) 构造函数
 /**//// <summary>
        /**//// <summary> /// 默认构造函数
        /// 默认构造函数 /// </summary>
        /// </summary> public Class_Tree()
        public Class_Tree()
 ...{
        ...{ m_ClassID = 0;
            m_ClassID = 0; m_ClassName = null;
            m_ClassName = null; m_ClassUrl = null;
            m_ClassUrl = null; m_Priority = 0;
            m_Priority = 0; m_ParentID = 0;
            m_ParentID = 0; m_IsActive = 0;
            m_IsActive = 0; m_Announcement = new ArrayList();
            m_Announcement = new ArrayList(); }
        } #endregion
        #endregion

 公有属性#region 公有属性
        公有属性#region 公有属性

 /**//// <summary>
        /**//// <summary> ///
        ///  /// </summary>
        /// </summary>         public int ClassID
        public int ClassID
 ...{
        ...{
 get ...{ return m_ClassID; }
            get ...{ return m_ClassID; }
 set ...{ m_IsChanged |= (m_ClassID != value); m_ClassID = value; }
            set ...{ m_IsChanged |= (m_ClassID != value); m_ClassID = value; } }
        }

 /**//// <summary>
        /**//// <summary> ///
        ///  /// </summary>
        /// </summary>         public string ClassName
        public string ClassName
 ...{
        ...{
 get ...{ return m_ClassName; }
            get ...{ return m_ClassName; } set
            set
 ...{
            ...{ if (value != null)
                if (value != null) if (value.Length > 50)
                    if (value.Length > 50) throw new ArgumentOutOfRangeException("Invalid value for ClassName", value, value.ToString());
                        throw new ArgumentOutOfRangeException("Invalid value for ClassName", value, value.ToString());
 m_IsChanged |= (m_ClassName != value); m_ClassName = value;
                m_IsChanged |= (m_ClassName != value); m_ClassName = value; }
            } }
        }

 /**//// <summary>
        /**//// <summary> ///
        ///  /// </summary>
        /// </summary>         public string ClassUrl
        public string ClassUrl
 ...{
        ...{
 get ...{ return m_ClassUrl; }
            get ...{ return m_ClassUrl; } set
            set
 ...{
            ...{ if (value != null)
                if (value != null) if (value.Length > 100)
                    if (value.Length > 100) throw new ArgumentOutOfRangeException("Invalid value for ClassUrl", value, value.ToString());
                        throw new ArgumentOutOfRangeException("Invalid value for ClassUrl", value, value.ToString());
 m_IsChanged |= (m_ClassUrl != value); m_ClassUrl = value;
                m_IsChanged |= (m_ClassUrl != value); m_ClassUrl = value; }
            } }
        }

 /**//// <summary>
        /**//// <summary> ///
        ///  /// </summary>
        /// </summary>         public int Priority
        public int Priority
 ...{
        ...{
 get ...{ return m_Priority; }
            get ...{ return m_Priority; }
 set ...{ m_IsChanged |= (m_Priority != value); m_Priority = value; }
            set ...{ m_IsChanged |= (m_Priority != value); m_Priority = value; } }
        }

 /**//// <summary>
        /**//// <summary> ///
        ///  /// </summary>
        /// </summary>         public int ParentID
        public int ParentID
 ...{
        ...{
 get ...{ return m_ParentID; }
            get ...{ return m_ParentID; }
 set ...{ m_IsChanged |= (m_ParentID != value); m_ParentID = value; }
            set ...{ m_IsChanged |= (m_ParentID != value); m_ParentID = value; } }
        }

 /**//// <summary>
        /**//// <summary> ///
        ///  /// </summary>
        /// </summary>         public int IsActive
        public int IsActive
 ...{
        ...{
 get ...{ return m_IsActive; }
            get ...{ return m_IsActive; }
 set ...{ m_IsChanged |= (m_IsActive != value); m_IsActive = value; }
            set ...{ m_IsChanged |= (m_IsActive != value); m_IsActive = value; } }
        }

 /**//// <summary>
        /**//// <summary> /// 对象的值是否被改变
        /// 对象的值是否被改变 /// </summary>
        /// </summary> public bool IsChanged
        public bool IsChanged
 ...{
        ...{
 get ...{ return m_IsChanged; }
            get ...{ return m_IsChanged; } }
        }

 /**//// <summary>
        /**//// <summary> /// 对象是否已经被删除
        /// 对象是否已经被删除 /// </summary>
        /// </summary> public bool IsDeleted
        public bool IsDeleted
 ...{
        ...{
 get ...{ return m_IsDeleted; }
            get ...{ return m_IsDeleted; } }
        }

 /**//// <summary>
        /**//// <summary> /// 对象中的所有新闻列表
        /// 对象中的所有新闻列表 /// </summary>
        /// </summary> public IList Announcements
        public IList Announcements
 ...{
        ...{
 get ...{ return m_Announcement; }
            get ...{ return m_Announcement; } set
            set
 ...{
            ...{ m_IsChanged |= (m_Announcement != value);
                m_IsChanged |= (m_Announcement != value); m_Announcement = value;
                m_Announcement = value; }
            } }
        }
 #endregion
        #endregion

 公有函数#region 公有函数
        公有函数#region 公有函数

 /**//// <summary>
        /**//// <summary> /// 标记对象已删除
        /// 标记对象已删除 /// </summary>
        /// </summary> public void MarkAsDeleted()
        public void MarkAsDeleted()
 ...{
        ...{ m_IsDeleted = true;
            m_IsDeleted = true; m_IsChanged = true;
            m_IsChanged = true; }
        }

 #endregion
        #endregion

 重写Equals和HashCode#region 重写Equals和HashCode
        重写Equals和HashCode#region 重写Equals和HashCode
 /**//// <summary>
        /**//// <summary> /// 用唯一值实现Equals
        /// 用唯一值实现Equals /// </summary>
        /// </summary> public override bool Equals(object obj)
        public override bool Equals(object obj)
 ...{
        ...{ if (this == obj) return true;
            if (this == obj) return true; if ((obj == null) || (obj.GetType() != GetType())) return false;
            if ((obj == null) || (obj.GetType() != GetType())) return false; Class_Tree castObj = (Class_Tree)obj;
            Class_Tree castObj = (Class_Tree)obj; return (castObj != null) &&
            return (castObj != null) && (m_ClassID == castObj.ClassID);
                (m_ClassID == castObj.ClassID); }
        }

 /**//// <summary>
        /**//// <summary> /// 用唯一值实现GetHashCode
        /// 用唯一值实现GetHashCode /// </summary>
        /// </summary> public override int GetHashCode()
        public override int GetHashCode()
 ...{
        ...{ int hash = 57;
            int hash = 57; hash = 27 * hash * m_ClassID.GetHashCode();
            hash = 27 * hash * m_ClassID.GetHashCode(); return hash;
            return hash; }
        } #endregion
        #endregion
 }
    } }
}注意:这里有个定义:private IList m_Announcement;(该对象是用来设置一对多关联用的,在代码中所有涉及到m_Announcement的都是和Announcement有关系的,它是该类下的所有新闻信息列表,生成工具中生成的时候没有这个的代码的。)下面的是Class_Tree.hbm.xml代码:
 <?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> <class name="DZ_Portal.App.Model.Class_Tree,DZ_Portal.App" table="PT_Class_Tree" lazy="false">
  <class name="DZ_Portal.App.Model.Class_Tree,DZ_Portal.App" table="PT_Class_Tree" lazy="false">
 <id name="ClassID" column="ClassID" type="Int32" unsaved-value="0">
    <id name="ClassID" column="ClassID" type="Int32" unsaved-value="0"> <generator class="assigned"/>
      <generator class="assigned"/> </id>
    </id> <property column="ClassName" type="String" name="ClassName" not-null="true" length="50" />
    <property column="ClassName" type="String" name="ClassName" not-null="true" length="50" /> <property column="ClassUrl" type="String" name="ClassUrl" length="100" />
    <property column="ClassUrl" type="String" name="ClassUrl" length="100" /> <property column="Priority" type="Int32" name="Priority" not-null="true" />
    <property column="Priority" type="Int32" name="Priority" not-null="true" /> <property column="ParentID" type="Int32" name="ParentID" not-null="true" />
    <property column="ParentID" type="Int32" name="ParentID" not-null="true" /> <property column="IsActive" type="Int32" name="IsActive" not-null="true" />
    <property column="IsActive" type="Int32" name="IsActive" not-null="true" /> 
     <bag name="Announcements" cascade="all" inverse="true" lazy="true">
    <bag name="Announcements" cascade="all" inverse="true" lazy="true"> <key column="ClassID"/>
      <key column="ClassID"/> <one-to-many class="DZ_Portal.App.Model.Announcement,DZ_Portal.App"/>
      <one-to-many class="DZ_Portal.App.Model.Announcement,DZ_Portal.App"/> </bag>
    </bag> 
     </class>
  </class> </hibernate-mapping>
</hibernate-mapping>
bag 节点的也是配置关联用的,该对象的生成是否有问题现在还不知道,目前没有着手创建出来测试。后面会做测试的。现在主要是为了Announcement对象关联时用到Class_Tree对象而用的。
三、本来要继续加入BLL层和DAL层的代码,发现我这里都没有这两层的代码,但是程序一样没有出错,那么我们看看Announcement对象该怎么改:下面是Announcement.cs改后的代码:
 using System;
using System; using System.Data;
using System.Data; using System.Collections.Generic;
using System.Collections.Generic; using System.Text;
using System.Text; using FastSpring.Base.Model;
using FastSpring.Base.Model; using FastSpring.Core.Model;
using FastSpring.Core.Model; using FastSpring.Common;
using FastSpring.Common;

 namespace DZ_Portal.App.Model
namespace DZ_Portal.App.Model
 ...{
...{
 /**//// <summary>
    /**//// <summary> ///
    ///     /// </summary>
    /// </summary> [Serializable]
    [Serializable] public sealed class Announcement: BaseVersionModel
    public sealed class Announcement: BaseVersionModel
 ...{
    ...{
 私有成员#region 私有成员
        私有成员#region 私有成员
 private bool m_IsChanged;
        private bool m_IsChanged; private bool m_IsDeleted;
        private bool m_IsDeleted; private int m_ItemID;
        private int m_ItemID; private int m_ModuleID;
        private int m_ModuleID; private string m_CreateByUser;
        private string m_CreateByUser; private DateTime m_CreatedDate;
        private DateTime m_CreatedDate; private string m_Title;
        private string m_Title; private string m_MoreLink;
        private string m_MoreLink; private DateTime m_ExpireDate;
        private DateTime m_ExpireDate; private string m_Description;
        private string m_Description; private int m_Frequency;
        private int m_Frequency; private int m_IsActive;
        private int m_IsActive; private int m_Priority;
        private int m_Priority; private int m_ClassID;
        private int m_ClassID;
 //一对一关系
        //一对一关系 private Class_Tree m_Class_Tree;
        private Class_Tree m_Class_Tree;

 #endregion
        #endregion

 GetEntityType()#region GetEntityType()
        GetEntityType()#region GetEntityType() public override Type GetEntityType()
        public override Type GetEntityType()
 ...{
        ...{ return typeof(Announcement);
            return typeof(Announcement); }
        } #endregion
        #endregion

 默认( 空 ) 构造函数#region 默认( 空 ) 构造函数
        默认( 空 ) 构造函数#region 默认( 空 ) 构造函数
 /**//// <summary>
        /**//// <summary> /// 默认构造函数
        /// 默认构造函数 /// </summary>
        /// </summary> public Announcement()
        public Announcement()
 ...{
        ...{ m_ItemID = 0;
            m_ItemID = 0; m_ModuleID = 0;
            m_ModuleID = 0; m_CreateByUser = null;
            m_CreateByUser = null; m_CreatedDate = DateTime.MinValue;
            m_CreatedDate = DateTime.MinValue; m_Title = null;
            m_Title = null; m_MoreLink = null;
            m_MoreLink = null; m_ExpireDate = DateTime.MinValue;
            m_ExpireDate = DateTime.MinValue; m_Description = null;
            m_Description = null; m_Frequency = 0;
            m_Frequency = 0; m_IsActive = 0;
            m_IsActive = 0; m_Priority = 0;
            m_Priority = 0; m_ClassID = 0;
            m_ClassID = 0; m_Class_Tree=null;
            m_Class_Tree=null; }
        } #endregion
        #endregion

 公有属性#region 公有属性
        公有属性#region 公有属性

 /**//// <summary>
        /**//// <summary> ///
        ///  /// </summary>
        /// </summary>         public Class_Tree class_tree
        public Class_Tree class_tree
 ...{
        ...{
 get ...{ return m_Class_Tree; }
            get ...{ return m_Class_Tree; }
 set ...{ m_IsChanged |= (m_Class_Tree != value); m_Class_Tree = value; }
            set ...{ m_IsChanged |= (m_Class_Tree != value); m_Class_Tree = value; } }
        }

 /**//// <summary>
        /**//// <summary> ///
        ///  /// </summary>
        /// </summary>         public int ItemID
        public int ItemID
 ...{
        ...{
 get ...{ return m_ItemID; }
            get ...{ return m_ItemID; }
 set ...{ m_IsChanged |= (m_ItemID != value); m_ItemID = value; }
            set ...{ m_IsChanged |= (m_ItemID != value); m_ItemID = value; } }
        }

 /**//// <summary>
        /**//// <summary> ///
        ///  /// </summary>
        /// </summary>         public int ModuleID
        public int ModuleID
 ...{
        ...{
 get ...{ return m_ModuleID; }
            get ...{ return m_ModuleID; }
 set ...{ m_IsChanged |= (m_ModuleID != value); m_ModuleID = value; }
            set ...{ m_IsChanged |= (m_ModuleID != value); m_ModuleID = value; } }
        }

 /**//// <summary>
        /**//// <summary> ///
        ///  /// </summary>
        /// </summary>         public string CreateByUser
        public string CreateByUser
 ...{
        ...{
 get ...{ return m_CreateByUser; }
            get ...{ return m_CreateByUser; } set
            set
 ...{
            ...{ if (value != null)
                if (value != null) if (value.Length > 50)
                    if (value.Length > 50) throw new ArgumentOutOfRangeException("Invalid value for CreateByUser", value, value.ToString());
                        throw new ArgumentOutOfRangeException("Invalid value for CreateByUser", value, value.ToString());
 m_IsChanged |= (m_CreateByUser != value); m_CreateByUser = value;
                m_IsChanged |= (m_CreateByUser != value); m_CreateByUser = value; }
            } }
        }

 /**//// <summary>
        /**//// <summary> ///
        ///  /// </summary>
        /// </summary>         public DateTime CreatedDate
        public DateTime CreatedDate
 ...{
        ...{
 get ...{ return m_CreatedDate; }
            get ...{ return m_CreatedDate; }
 set ...{ m_IsChanged |= (m_CreatedDate != value); m_CreatedDate = value; }
            set ...{ m_IsChanged |= (m_CreatedDate != value); m_CreatedDate = value; } }
        }

 /**//// <summary>
        /**//// <summary> ///
        ///  /// </summary>
        /// </summary>         public string Title
        public string Title
 ...{
        ...{
 get ...{ return m_Title; }
            get ...{ return m_Title; } set
            set
 ...{
            ...{ if (value != null)
                if (value != null) if (value.Length > 100)
                    if (value.Length > 100) throw new ArgumentOutOfRangeException("Invalid value for Title", value, value.ToString());
                        throw new ArgumentOutOfRangeException("Invalid value for Title", value, value.ToString());
 m_IsChanged |= (m_Title != value); m_Title = value;
                m_IsChanged |= (m_Title != value); m_Title = value; }
            } }
        }

 /**//// <summary>
        /**//// <summary> ///
        ///  /// </summary>
        /// </summary>         public string MoreLink
        public string MoreLink
 ...{
        ...{
 get ...{ return m_MoreLink; }
            get ...{ return m_MoreLink; } set
            set
 ...{
            ...{ if (value != null)
                if (value != null) if (value.Length > 150)
                    if (value.Length > 150) throw new ArgumentOutOfRangeException("Invalid value for MoreLink", value, value.ToString());
                        throw new ArgumentOutOfRangeException("Invalid value for MoreLink", value, value.ToString());
 m_IsChanged |= (m_MoreLink != value); m_MoreLink = value;
                m_IsChanged |= (m_MoreLink != value); m_MoreLink = value; }
            } }
        }

 /**//// <summary>
        /**//// <summary> ///
        ///  /// </summary>
        /// </summary>         public DateTime ExpireDate
        public DateTime ExpireDate
 ...{
        ...{
 get ...{ return m_ExpireDate; }
            get ...{ return m_ExpireDate; }
 set ...{ m_IsChanged |= (m_ExpireDate != value); m_ExpireDate = value; }
            set ...{ m_IsChanged |= (m_ExpireDate != value); m_ExpireDate = value; } }
        }

 /**//// <summary>
        /**//// <summary> ///
        ///  /// </summary>
        /// </summary>         public string Description
        public string Description
 ...{
        ...{
 get ...{ return m_Description; }
            get ...{ return m_Description; } set
            set
 ...{
            ...{ if (value != null)
                if (value != null) if (value.Length > 2147483647)
                    if (value.Length > 2147483647) throw new ArgumentOutOfRangeException("Invalid value for Description", value, value.ToString());
                        throw new ArgumentOutOfRangeException("Invalid value for Description", value, value.ToString());
 m_IsChanged |= (m_Description != value); m_Description = value;
                m_IsChanged |= (m_Description != value); m_Description = value; }
            } }
        }

 /**//// <summary>
        /**//// <summary> ///
        ///  /// </summary>
        /// </summary>         public int Frequency
        public int Frequency
 ...{
        ...{
 get ...{ return m_Frequency; }
            get ...{ return m_Frequency; }
 set ...{ m_IsChanged |= (m_Frequency != value); m_Frequency = value; }
            set ...{ m_IsChanged |= (m_Frequency != value); m_Frequency = value; } }
        }

 /**//// <summary>
        /**//// <summary> ///
        ///  /// </summary>
        /// </summary>         public int IsActive
        public int IsActive
 ...{
        ...{
 get ...{ return m_IsActive; }
            get ...{ return m_IsActive; }
 set ...{ m_IsChanged |= (m_IsActive != value); m_IsActive = value; }
            set ...{ m_IsChanged |= (m_IsActive != value); m_IsActive = value; } }
        }

 /**//// <summary>
        /**//// <summary> ///
        ///  /// </summary>
        /// </summary>         public int Priority
        public int Priority
 ...{
        ...{
 get ...{ return m_Priority; }
            get ...{ return m_Priority; }
 set ...{ m_IsChanged |= (m_Priority != value); m_Priority = value; }
            set ...{ m_IsChanged |= (m_Priority != value); m_Priority = value; } }
        }

 /**//// <summary>
        /**//// <summary> ///
        ///  /// </summary>
        /// </summary>         public int ClassID
        public int ClassID
 ...{
        ...{
 get ...{ return m_ClassID; }
            get ...{ return m_ClassID; }
 set ...{ m_IsChanged |= (m_ClassID != value); m_ClassID = value; }
            set ...{ m_IsChanged |= (m_ClassID != value); m_ClassID = value; } }
        }

 /**//// <summary>
        /**//// <summary> /// 对象的值是否被改变
        /// 对象的值是否被改变 /// </summary>
        /// </summary> public bool IsChanged
        public bool IsChanged
 ...{
        ...{
 get ...{ return m_IsChanged; }
            get ...{ return m_IsChanged; } }
        }

 /**//// <summary>
        /**//// <summary> /// 对象是否已经被删除
        /// 对象是否已经被删除 /// </summary>
        /// </summary> public bool IsDeleted
        public bool IsDeleted
 ...{
        ...{
 get ...{ return m_IsDeleted; }
            get ...{ return m_IsDeleted; } }
        }
 #endregion
        #endregion

 公有函数#region 公有函数
        公有函数#region 公有函数

 /**//// <summary>
        /**//// <summary> /// 标记对象已删除
        /// 标记对象已删除 /// </summary>
        /// </summary> public void MarkAsDeleted()
        public void MarkAsDeleted()
 ...{
        ...{ m_IsDeleted = true;
            m_IsDeleted = true; m_IsChanged = true;
            m_IsChanged = true; }
        }

 #endregion
        #endregion

 重写Equals和HashCode#region 重写Equals和HashCode
        重写Equals和HashCode#region 重写Equals和HashCode
 /**//// <summary>
        /**//// <summary> /// 用唯一值实现Equals
        /// 用唯一值实现Equals /// </summary>
        /// </summary> public override bool Equals(object obj)
        public override bool Equals(object obj)
 ...{
        ...{ if (this == obj) return true;
            if (this == obj) return true; if ((obj == null) || (obj.GetType() != GetType())) return false;
            if ((obj == null) || (obj.GetType() != GetType())) return false; Announcement castObj = (Announcement)obj;
            Announcement castObj = (Announcement)obj; return (castObj != null) &&
            return (castObj != null) && (m_ItemID == castObj.ItemID);
                (m_ItemID == castObj.ItemID); }
        }

 /**//// <summary>
        /**//// <summary> /// 用唯一值实现GetHashCode
        /// 用唯一值实现GetHashCode /// </summary>
        /// </summary> public override int GetHashCode()
        public override int GetHashCode()
 ...{
        ...{ int hash = 57;
            int hash = 57; hash = 27 * hash * m_ItemID.GetHashCode();
            hash = 27 * hash * m_ItemID.GetHashCode(); return hash;
            return hash; }
        } #endregion
        #endregion
 public override bool EqualsID(int ID)
        public override bool EqualsID(int ID)
 ...{
        ...{ return this.ItemID == ID;
            return this.ItemID == ID; }
        } }
    } }
} <?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> <class name="DZ_Portal.App.Model.Announcement,DZ_Portal.App" table="PT_Announcement" lazy="false">
  <class name="DZ_Portal.App.Model.Announcement,DZ_Portal.App" table="PT_Announcement" lazy="false">
 <id name="ItemID" column="ItemID" type="Int32" unsaved-value="0">
    <id name="ItemID" column="ItemID" type="Int32" unsaved-value="0"> <generator class="native"/>
      <generator class="native"/> </id>
    </id> <property column="ModuleID" type="Int32" name="ModuleID" />
    <property column="ModuleID" type="Int32" name="ModuleID" /> <property column="CreateByUser" type="String" name="CreateByUser" not-null="true" length="50" />
    <property column="CreateByUser" type="String" name="CreateByUser" not-null="true" length="50" /> <property column="CreatedDate" type="DateTime" name="CreatedDate" not-null="true" />
    <property column="CreatedDate" type="DateTime" name="CreatedDate" not-null="true" /> <property column="Title" type="String" name="Title" not-null="true" length="100" />
    <property column="Title" type="String" name="Title" not-null="true" length="100" /> <property column="MoreLink" type="String" name="MoreLink" not-null="true" length="150" />
    <property column="MoreLink" type="String" name="MoreLink" not-null="true" length="150" /> <property column="ExpireDate" type="DateTime" name="ExpireDate" not-null="true" />
    <property column="ExpireDate" type="DateTime" name="ExpireDate" not-null="true" /> <property column="Description" type="String" name="Description" not-null="true" length="2147483647" />
    <property column="Description" type="String" name="Description" not-null="true" length="2147483647" /> <property column="Frequency" type="Int32" name="Frequency" not-null="true" />
    <property column="Frequency" type="Int32" name="Frequency" not-null="true" /> <property column="IsActive" type="Int32" name="IsActive" not-null="true" />
    <property column="IsActive" type="Int32" name="IsActive" not-null="true" /> <property column="Priority" type="Int32" name="Priority" not-null="true" />
    <property column="Priority" type="Int32" name="Priority" not-null="true" /> <property column="ClassID" type="Int32" name="ClassID" not-null="true" />
    <property column="ClassID" type="Int32" name="ClassID" not-null="true" />
 <many-to-one name="class_tree" class="DZ_Portal.App.Model.Class_Tree,DZ_Portal.App" column="ClassID"  unique="true"></many-to-one>
    <many-to-one name="class_tree" class="DZ_Portal.App.Model.Class_Tree,DZ_Portal.App" column="ClassID"  unique="true"></many-to-one>
 </class>
    </class>
 <query name="GetAnnouncementsOfClassID">
  <query name="GetAnnouncementsOfClassID"> <![CDATA[from Announcement announcement WHERE announcement.IsActive=1 AND announcement.ClassID=:param1 ORDER BY announcement.CreatedDate DESC,announcement.Priority DESC]]>
    <![CDATA[from Announcement announcement WHERE announcement.IsActive=1 AND announcement.ClassID=:param1 ORDER BY announcement.CreatedDate DESC,announcement.Priority DESC]]> </query>
  </query>
 </hibernate-mapping>
</hibernate-mapping> <!--1。HBM映射配置文件中“urn:nhibernate-mapping-2.0 ”需改为“urn:nhibernate-mapping-2.2”
<!--1。HBM映射配置文件中“urn:nhibernate-mapping-2.0 ”需改为“urn:nhibernate-mapping-2.2”
 2。 <class name="类名,程序集名" table="Archives" >需改为<class name="类名,程序集名
2。 <class name="类名,程序集名" table="Archives" >需改为<class name="类名,程序集名 " table="Archives" lazy="false">,需要添加“lazy="false"”,不然会出现错误:
" table="Archives" lazy="false">,需要添加“lazy="false"”,不然会出现错误: he following types may not be used as proxies: xxxxx: method get_CreateDate should be virtual
he following types may not be used as proxies: xxxxx: method get_CreateDate should be virtual
 3。Spring.Data.NHibernate程序集变更为:Spring.Data.NHibernate12 (注意:Spring.Data.NHibernate
3。Spring.Data.NHibernate程序集变更为:Spring.Data.NHibernate12 (注意:Spring.Data.NHibernate 程序集仍然存在,是对NHibernate1.0X的支持,Spring.Data.NHibernate12 为新增的支持NHibernate1.2.0GA的程序集)
程序集仍然存在,是对NHibernate1.0X的支持,Spring.Data.NHibernate12 为新增的支持NHibernate1.2.0GA的程序集) -->
-->many-to-one是设置关联是加进去的,因为很多条新闻对应1个类对象,也可以1个新闻对应1个类对象,所以这里是设置many-to-one。
解说:由于业务实体之间的关联不涉及到其它层次,因此这里Class_Tree中可以没有DAL和BLL层,nhibernate的实体关联只涉及到实体与实体之间的关系,只要你配置好它的hbm文件,实体类代码中使用到相关联的对象,那么,它在实体生成时会根据配置文件自动处理相关联的对象的。下面我们来看看关联后的结果。我们在Index页面中有一处是显示新闻信息的搜索结果的,我们当时显示的是Class_ID的,那么我们现在要显示Class_ID对应的类名称:于是我们可以把“<%...#DataBinder.Eval(Container.DataItem, "ClassID")%></a>”这段改成:“<%#DataBinder.Eval(Container.DataItem, "Class_Tree.ClassName")%></a>”(我都不敢相信,这样改也能正常显示出来,什么原理?知道的朋友麻烦告诉我一下)运行程序就可以看到修改后的结果了!
原创作品出自努力偷懒,转载请说明文章出处:http://blog.csdn.net/kfarvid或 http://www.cnblogs.com/kfarvid/
 
                    
                
 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号