Nhibernate学习之many-to-many篇

参考:http://www.cnblogs.com/jillzhang/archive/2007/04/01/686079.html

自己修改了一下,原来的(Nhibernate)版本旧了!

Nhibernate学习之many-to-many篇  - chy2z - 黑暗行动

MUser:

-------------------------------------------------------------------

using System;
using System.Collections.Generic;
using System.Collections;
using System.Text;

namespace Model3
{
   public class MUser
    {

        private int userId;
        private string name;
        private IList groups = new ArrayList();

        public MUser() {}

       public virtual int UserId
        {
            get { return userId; }
            set { userId = value; }
        }

       public virtual string Name
        {
            get { return name; }
            set { name = value; }
        }

       public virtual IList Groups
        {
            get { return groups; }
            set { groups = value; }
        }

       
    }
}
-------------------------------------------------------------------

User.hbm.xml

-------------------------------------------------------------------

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
  <class name="Model3.MUser, Model3" table="Musers">
    <id name="UserId" column="user_id" type="Int32" unsaved-value="0">
      <generator class="identity" />
    </id>
    <property name="Name" column="name" type="String"/>
    <bag name="Groups" table="MUserGroups" inverse="true">
      <key column="user_id" />
      <many-to-many column="group_id" class="Model3.Group, Model3" />
    </bag>
  </class>
</hibernate-mapping>

-------------------------------------------------------------------

Group.cs

-------------------------------------------------------------------

using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;

namespace Model3
{

    public class Group
    {
        private int groupId;
        private string name;
        private string description;
        private IList users = new ArrayList();

        public Group()
        {
        }

        public virtual int GroupId
        {
            get { return groupId; }
            set { groupId = value; }
        }

        public virtual string Name
        {
            get { return name; }
            set { name = value; }
        }

        public virtual string Description
        {
            get { return description; }
            set { description = value; }
        }

        public virtual IList Users
        {
            get { return users; }
            set { users = value; }
        }

      

    } //class Group
}

 ------------------------------------------------------

Group.hbm.xml

-----------------------------------------------------

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
  <class name="Model3.Group, Model3" table="groups">
    <id name="GroupId" column="group_id" type="Int32" unsaved-value="0">
      <generator class="identity" />
    </id>
    <property name="Name" column="name" type="String"/>
    <property name="Description" column= "description" type="String"/>
    <bag name="Users" table="MUserGroups">
      <key column="group_id" />
      <many-to-many column="user_id" class="Model3.MUser, Model3" />
    </bag>
  </class>
</hibernate-mapping>

------------------------------------------------

测试页面:

------------------------------------------------

public partial class Default3 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //Test();
    }

    public void Test()
    {
        ISession session = Common.SessionFactory.OpenSession("Model3");

        MUser user1 = new MUser();
        user1.Name = "test1";
        MUser user2 = new MUser();
        user2.Name = "test2";

        Group group1 = new Group();
        group1.Name = "group1";
        Group group2 = new Group();
        group2.Name = "group2";

        user1.Groups.Add(group2);
        user2.Groups.Add(group1);
        group1.Users.Add(user2);
        group2.Users.Add(user1);

        ITransaction trans = null;
        try
        {
            trans = session.BeginTransaction();

            session.Save(user1);
            session.Save(user2);
            session.Save(group1);
            session.Save(group2);

            trans.Commit();
        }
        catch (Exception e)
        {
            if (trans != null) trans.Rollback();
            throw e;
        }
        finally
        {
            session.Close();
        }

    }


    protected void Button1_Click(object sender, EventArgs e)
    {
        ISession session = Common.SessionFactory.OpenSession("Model3");

        MUser u = new MUser();
        u.Name = "test6";
     
        ITransaction trans = session.BeginTransaction();
        session.Save(u);
        trans.Commit();
        session.Close();
    }

    protected void Button2_Click(object sender, EventArgs e)
    {
        ISession session = Common.SessionFactory.OpenSession("Model3");

        Group g = new Group();
        g.Name = "group8";

        ITransaction trans = session.BeginTransaction();
        session.Save(g);
        trans.Commit();
        session.Close();
    }
}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值