/// <summary>
        /// Initialize Collection or Proxy
        /// ���ⲿInitialize��Ĭ��LockMode=Write�����ΪNone������д���ݿ⡣Lock��Ҫ��Evict
        /// </summary>
        /// <param name="proxy"></param>
        /// <param name="owner"></param>
        /// <param name="session"></param>
        internal static void Initialize(object proxy, object owner, NHibernate.ISession session)
        {
            if (null == proxy)
                return;

            if (!NHibernateUtil.IsInitialized(proxy))
            {
                if (proxy is INHibernateProxy)
                {
                    session.Lock(proxy, NHibernate.LockMode.None);
                    NHibernateUtil.Initialize(proxy);
                    session.Evict(proxy);
                }
                else if (proxy is IPersistentCollection)
                {
                    bool b = session.Contains(owner);
                    if (!b)
                    {
                        session.Lock(owner, NHibernate.LockMode.None);
                    }
                    NHibernateUtil.Initialize(proxy);
                    if (!b)
                    {
                        session.Evict(owner);
                    }
                }

                //if (proxy is INHibernateProxy || proxy is IPersistentCollection)
                //{
                //    if (proxy is INHibernateProxy) session.Lock(proxy, NHibernate.LockMode.None);
                //    else if (!session.Contains(owner)) session.Lock(owner, NHibernate.LockMode.None);

                //    NHibernateUtil.Initialize(proxy);
                //}
            }
        }