四、架構的初始化
Castle ActiveRecord 在應用它的類之前必須初始化。隻有在程式啟用的時候初始一次。在這裡我們假設我們開發的是WinForm應用程式,在窗體顯示之前我們必須為它初始化。
ActiveRecord也需要配置一次資訊來告訴它是用了哪一個資料庫,怎麼樣和它會話。其實這就是NHibernate所用到的配置,是以你現在要決定在哪裡儲存這些配置。
ActiveRecord配置
我們可以選擇不同的方式來配置ActiveRecord裡的配置也可以選擇儲存到哪裡。在文檔裡有更詳細的說明。為了簡單起見我們将使用一個簡單的獨立的XML檔案:
<?xml version="1.0" encoding="utf-8" ?>
<activerecord>
<config>
<add
key="connection.driver_class"
value="NHibernate.Driver.SqlClientDriver" />
<add
key="dialect"
value="NHibernate.Dialect.MsSql2005Dialect" />
<add
key="connection.provider"
value="NHibernate.Connection.DriverConnectionProvider" />
<add
key="connection.connection_string"
value="Data Source=.;Initial Catalog=test;Integrated Security=SSPI" />
</config>
</activerecord>
注意:這裡的配置是用的MS SQL Server 2005.如果你是用的其他的資料庫你就需要改一下這裡面的驅動了。詳細怎麼請參考 Xml Configuration Reference 文檔。
現在我們就儲存這個文檔并命名為:appcofig.xml。下面一段代碼我們來通路這個檔案。
namespace BlogSample
{
using System.Windows.Forms;
using BlogSample.UI;
using Castle.ActiveRecord;
using Castle.ActiveRecord.Framework.Config;
public class App
{
public static void Main()
{
XmlConfigurationSource source = new XmlConfigurationSource("appconfig.xml");
}
}
}
初始化ActiveRecord
最後我們來通過這個配置檔案來初始ActivRecord。我們也需要來指定ActiveRecord的檢查類型。為此我們可以指定一個程式集或一個程式集數組。為了簡單我們就隻用一個數組類型:
(我在這裡的了解是ActivRecord為我們提供了自己檢查功能,可能包括文法和邏輯錯誤吧,如果隻有幾個類就單獨的列出來,要有多個的話可以生成一個dll檔案來做檢查。這隻是一個排錯過程。。。)
namespace BlogSample
{
using System.Windows.Forms;
using BlogSample.UI;
using Castle.ActiveRecord;
using Castle.ActiveRecord.Framework.Config;
public class App
{
public static void Main()
{
XmlConfigurationSource source = new XmlConfigurationSource("appconfig.xml");
ActiveRecordStarter.Initialize( source, typeof(Blog), typeof(Post), typeof(User) );
}
}
}
做完這一步我們為應用ActiveRecord鋪平了道路。
建立表
你可以使用ActiveRecord來建立表:
public class App
{
public static void Main()
{
XmlConfigurationSource source = new XmlConfigurationSource("appconfig.xml");
ActiveRecordStarter.Initialize( source, typeof(Blog), typeof(Post), typeof(User) );
if (MessageBox.Show("Do you want to let ActiveRecord create the database tables?",
"Schema", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
ActiveRecordStarter.CreateSchema();
}
}
}
(就是在寫好類的情況下自動建立表)
現在我的事情并未做完,我們要用上面的類開始自己真正的代碼。我們可以展示出更多的方法來實作資料庫的相關操作。
繼續使用這些類。