component example - 3.5 of 4

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="TstDBConnection.Entities"
                   assembly="TstDBConnection">
  <class name="Staff" table="Staff">
    <id name="Id" column="Id">
      <generator class="guid.comb"/>
    </id>
    <property name="Title" column="Title"></property>
    <component name="Name" class="Name">
      <property name="FirstName" column="FirstName"></property>
      <property name="LastName" column="LastName"></property>
    </component>
  </class>
</hibernate-mapping>
namespace TstDBConnection.Entities
{
    public class Name
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }
}
namespace TstDBConnection.Entities
{
    public class Staff
    {
        public virtual Guid Id { get; set; }
        public virtual Name Name { get; set; }
        public virtual string Title { get; set; }
    }
}
        public static void TestComponentMapping(ISessionFactory sessionFactory)
        {
            using (ISession session = sessionFactory.OpenSession())
            {
                Name name = new Name() { FirstName = "John", LastName = "Doe" };
                Staff emp = new Staff() { Name = name, Title = "System Developer" };
                session.Save(emp);
                session.Flush();

                var query = from employee in session.Query<Staff>() select employee;
                IList<Staff> employees = query.ToList();
            }
        }
        static void Main(string[] args)
        {
            log4net.Config.XmlConfigurator.Configure(); // log4net
            Configuration configuration = new Configuration();
            configuration.Configure();
            ISessionFactory sessionFactory = configuration.BuildSessionFactory();

            TestComponentMapping(sessionFactory);

            sessionFactory.Close();
        }

posted @ 2012-09-06 14:33  webglcn  阅读(127)  评论(0编辑  收藏  举报