NHibernate初學問題總結一

來源:互聯網
上載者:User
昨天剛開始研究NHibernate就遇到了一個問題,在這裡非常感謝 DDL,是他幫了我很大忙!

起初先DDL的NHibernate快速起步一文,然後下載了文章中的範例,自己小試了一把,然後寫了一個Console程式,調用DDL類中的方法沒問題,由於沒裝2005所以沒開啟工程,只是看看裡面的代碼。後來自己寫了一個
測試類別,按照DDL測試類別中的寫法就是不行總是報不能找到實體類User,後來和DDL聊天過程中發現了需要把實體類的設定檔User.hbm.xml載入進來,然後自己又多寫了一句話

cfg.AddXmlFile("Goody9807.NhibernateTest.User.hbm.xml"); 才可以通過,但為什麼DDL的方法就沒問題呢?

後來才發現他是在程式中配置的,需要把xml檔案設定為嵌入資源,:

而自己的寫法是另一種方式
My Code是:

 1using System;
 2
 3using NHibernate;
 4using NHibernate.Cfg;
 5using NUnit.Framework;
 6
 7namespace Goody9807.NhibernateTest
 8{
 9    /**//// <summary>
10    /// Summary description for MyTestNH.
11    /// </summary>
12    public class MyTestNH
13    {
14        public MyTestNH()
15        {
16            //
17            // TODO: Add constructor logic here
18            //
19        }
20        
21        public void AddUser()
22        {
23            Goody9807.NhibernateTest.User u =new Goody9807.NhibernateTest.User() ;
24            
25            try
26            {
27                Configuration cfg = new Configuration().Configure();
28                //cfg.AddXmlFile("Goody9807.NhibernateTest.User.hbm.xml");
29                ISessionFactory factory =cfg.BuildSessionFactory() ;
30                ISession session=factory.OpenSession();
31                
32                u.Email ="Goody9807@sina.com";
33                u.UserName ="Goody9807";
34                u.Password ="888";
35                session.Save(u) ;    
36            }
37            catch(HibernateException e)
38            {
39                Console.WriteLine(e.ToString()) ;
40
41            }
42            finally
43            {
44            
45            }
46            
47
48        }
49    }
50}
51

另外文檔上寫得有些不明白


一個(某些時候更好的)方法是讓NHibernate自行用GetManifestResourceStream()來裝載對應檔

Configuration cfg = new Configuration().AddClass( typeof(NHibernate.Auction.Item) ).AddClass( typeof(NHibernate.Auction.Bid) );
好像也不行,為什嗎?

NHibernate 就會在這些類型的程式集的內嵌資源中尋找叫做NHibernate.Auction.Item.hbm.xmlNHibernate.Auction.Bid.hbm.xml的對應檔。這種方法取消了所有對檔案名稱的寫入程式碼。

另外一個(可能是最好的)方法是讓NHibernate讀取一個程式集中所有的設定檔:

Configuration cfg = new Configuration().AddAssembly( "NHibernate.Auction" );

這個有什麼用?

兄弟剛開始學習NHibernate,所以有什麼東西不對,還需指教,希望能和大家交流!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.