老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

NHibernate多對多關聯映射的實現-創新互聯

上次用EF演示了數據庫多對多關系的操作,這次我們還是引用上次的案例,來演示如何在C#當中使用NHibernate。

創新互聯建站長期為數千家客戶提供的網站建設服務,團隊從業經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯網生態環境。為渭源企業提供專業的網站制作、網站設計渭源網站改版等技術服務。擁有10多年豐富建站經驗和眾多成功案例,為您定制開發。

首先介紹一下NHibernate框架的來源。熟悉Java編程的讀者肯定知道Hibernate這個ORM。NHibernate就來源于Java中著名的ORM框架—Hibernate,這點從名稱當中就能夠知道。目前NHibernate的最新版本是3.3.3,好像有一陣子沒有update了,說明當前的版本也比較穩定了。具體的資料可以到官網查詢:http://nhforge.org/。

1、下載NHibernate

官網首頁就有下載鏈接,直接下載就可以了。

下載好之后會得到一個zip包。

NHibernate多對多關聯映射的實現

我們就地解壓可以看到如下目錄和文件:

NHibernate多對多關聯映射的實現

我們重點關注以下目錄的內容:

Configuration_Templates目錄:默認提供的一些配置模板。有支持Oracle、Sql Server、MySQL等等。

Required_Bins目錄:這里面存放了我們開發時常用的dll文件。其中的兩個xsd文件是能夠提供智能提示的文件,我們需要將它們倆復制到你本地的VS的Schemas目錄下,比如我的目錄為:D:\Program Files (x86)\Microsoft Visual Studio 11.0\Xml\Schemas 。

NHibernate多對多關聯映射的實現

復制好之后,重啟VS,在我們寫Hibernate配置文件時就有了智能提示了。

NHibernate多對多關聯映射的實現

準備工作做好之后,我們就可以正式演示。

2、創建一個類庫項目Model

我們定義好兩個類,分別為Student和Subject,為了便于管理,我們將它們放到Entity文件夾里,但命名空間仍為Model。

namespace Model
{
    public enum Gender { Female, Male }
                                         
    public class Student
    {
        public virtual int? StudentId { get; set; }
        public virtual string StudentName { get; set; }
        public virtual Gender Gender { get; set; }
        public virtual DateTime? BirthDay { get; set; }
                                         
        public virtual IList Subjects { get; set; }
    }
}
namespace Model
{
    public class Subject
    {
        public virtual int? SubjectId { get; set; }
        public virtual string SubjectName { get; set; }
                                       
        public virtual IList Students { get; set; }
    }
}

這是一個典型的多對多的應用場景。一個學生可以選修多個課程,一個課程可以被多個學生選修。

接下來我們再創建相應的Hibernate配置文件(就是普通的xml文件,取名為Student.hbm.xml和Subject.hbm.xml)。

Student.hbm.xml:



  
    
      
    
    
      
    
    
      
    
    
      
    
    
      
      
    
  

Subject.hbm.xml:



  
    
      
    
    
      
    
    
      
      
    
  

便于管理我們同樣的放到Config目錄下(自己創建的文件夾)。

同時修改兩個xml文件的生成操作由內容變為嵌入的資源(在vs中右鍵xml文件選擇屬性)

NHibernate多對多關聯映射的實現
3、創建一個控制臺應用程序

表和實體對應的內容已經定義好,下面關鍵的就是要寫代碼來測試NHibernate了,本著盡量降低學習難度的原則,我這里就用控制臺應用程序來驗證(你也可以新建一個類庫項目,然后用VS的單元測試或者第三方測試工具NUnit進行驗證)。

首先將下載的開發包里面的Configuration_Templates文件夾下的MSSQL.cfg.xml復制到控制臺應用程序中(為方便管理,我新建了一個Config文件夾,并把這個xml文件放到這里面,重命名為hibernate.cfg.xml)。

修改這個xml文件內容為:





  
    NHibernate.Driver.SqlClientDriver
    
      Server=.;database=nhibernateTest;uid=sa;pwd=123456;
    
    10
    true
    update
    NHibernate.Dialect.MsSql2008Dialect
    
  

注意這里面的一些節點的配置。比如mapping assembly里面的Model,就是指的是程序集的名稱。同時將此文件的復制到輸出目錄方式修改為始終復制。

NHibernate多對多關聯映射的實現

接下來,給控制臺項目添加兩個dll的引用,分別為Iesi.Collections.dll和NHibernate.dll,也是在Required_Bins文件夾里面。

添加好引用,我們創建一個新的類NHibernateTest來寫關鍵性代碼。

namespace NHibernateDemo
{
    public class NHibernateTest
    {
        private ISessionFactory _sessionFactory;
        public ISessionFactory SessionFactory
        {
            get
            {
                if (_sessionFactory == null)
                {
                    var cfg = new NHibernate.Cfg.Configuration().Configure("Config/hibernate.cfg.xml");
                    _sessionFactory = cfg.BuildSessionFactory();
                }
                return _sessionFactory;
            }
        }
                  
        public void TestInit()
        {
            using (ISession session = SessionFactory.OpenSession())
            {
                IList subjects = new List()
                {
                     new Subject { SubjectName = "數學" },
                     new Subject { SubjectName = "英語" },
                     new Subject { SubjectName = "計算機" },
                };
                  
                IList students = new List()
                {
                    new Student
                    {
                        StudentName = "guwei4037",
                        Gender = Gender.Male,
                        BirthDay = new DateTime(1984, 11, 25),
                        Subjects = subjects.Where(x => x.SubjectName == "數學" || x.SubjectName == "計算機").ToArray(),
                    },
                    new Student
                    {
                        StudentName = "gary.gu",
                        Gender = Gender.Female,
                        BirthDay = new DateTime(1987, 9, 15),
                        Subjects = subjects.Where(x => x.SubjectName == "數學" || x.SubjectName == "英語").ToArray(),
                    },
                };
                  
                ITransaction tran = session.BeginTransaction();
                try
                {
                    foreach (var subject in subjects)
                    {
                        session.Save(subject);
                    }
                  
                    foreach (var student in students)
                    {
                        session.Save(student);
                    }
                  
                    tran.Commit();
                }
                catch (Exception ex)
                {
                    tran.Rollback();
                    throw ex;
                }
            }
        }
    }
}

這是一個帶事務的多表插入的操作。

最后在Main方法中,寫入簡單的調用方法。

public class program
   {
       public static void Main(string[] args)
       {
           NHibernateTest test = new NHibernateTest();
           test.TestInit();
       }
   }

在運行這個程序之前,還要做一件事,就是要在你的Sql Server中新建一個空的數據庫nhibernateTest,否則會提示登錄失敗。

好了,這時我們已經準備好了一切,讓我們運行一下這個控制臺應用程序吧。

由于我們在hibernate.cfg.xml文件中定義了輸入sql,所以會看到窗口中的內容。

NHibernate多對多關聯映射的實現

好,沒有報錯。我們打開Sql Server看一下最終的結果。

NHibernate多對多關聯映射的實現

而且數據庫的表、主外鍵的關聯以及數據都為我們自動生成了。

好,雙向多對多的關系就演示到這里。如果需要更多詳細的信息請參考:http://nhforge.org/doc/nh/en/index.html。

創新互聯www.cdcxhl.cn,專業提供香港、美國云服務器,動態BGP最優骨干路由自動選擇,持續穩定高效的網絡助力業務部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統配攻擊溯源,準確進行流量調度,確保服務器高可用性。佳節活動現已開啟,新人活動云服務器買多久送多久。


標題名稱:NHibernate多對多關聯映射的實現-創新互聯
網站地址:http://www.xueling.net.cn/article/ceodii.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 亚洲国产精品成人久久 | 国产一区二区在线看 | 日本aa毛片a级毛片免费观看 | 亚洲AV成人精品日韩一区 | 久久青草国产免费频观 | av网站免费播放 | 国产专区中文字幕 | 丰满少妇夜夜爽爽高潮水网站 | 成人午夜福利视频镇东影视 | 久久大香香蕉国产拍国 | 成人区人妻精品一区二区不卡 | 国产欧美日韩精品一区二区被窝 | 欧美a级肉欲大片xxx | 插出白浆视频 | 男人和女人日b视频 | 欧美激情在线精品一区二区三区 | 在线永久免费观看日韩a | 国产精品亚洲mnbav网站 | 日日操夜夜操免费视频 | 久久免费av | 欧美日韩国产综合在线 | 国产精品刮毛 | 免费A片看黄网站WWW | 经典三级第一页 | 国产精品网站在线免费观看 | 午夜九九九 | 成年女人看片免费视频播放人 | 国产无遮挡乱子伦免费精品 | 在线黄色毛片 | 欧美18videosex性欧美tube1080 | 91视视频在线观看入口直接观看 | 亚洲精品网站在线观看 | 精品成人私密视频 | 18禁男女污污污午夜网站免费暖暖 | 亚洲4区| 免费观看亚洲人成网站 | 成人性生交天码免费看 | 国产中文av在线 | 超级碰碰青草免费视频 | 四虎在线网址 | 日本少妇高潮正在线播放 |