ข้ามไปที่เนื้อหาหลัก

Fluent NHibernate Configuration

I have a C# project which I have to develop for MS SQL Server, customer requirment, but since I do not have a license for it. Then I decide to go with NHibernate but NHibernate is relied on XML based configuration, which is not my preference, I research a little bit more, definitely I found out Fluent NHibernate is a good replacement for XML based configuration. I can map the entities with C# code that can reduce the errors prone in my code.

I use Firebird database in the development, though it can be used in production, I define the mapping as normal NHibernate (also Hibernate in Java). But when I try to build the configure for Fluent NHibernate, it's not the same as SQLite example, I try to fine the solution one by one from StackOverflow and the steps below can solved my problem.


  • Add the reference for NHibernate and its dependecies (NHibernate.dll, Iesi.Collections.dll)
  • Add a reference for Fluent NHibernate (FluentNHibernate.dll), you can get it from nuget packacge manager
  • Add a reference for Firebird dotnet connection (FirebirdSql.Data.FirebirdClient.dll)
  • Follow the step in Fluent NHibernate wiki
  • In the CreateSessionFactory adapt the code below
private static ISessionFactory CreateSessionFactory()
        {
            FbConnectionStringBuilder conStr = new FbConnectionStringBuilder();
            conStr.Database = @"D:\<path to your firebird database>\xxx.fdb";
            conStr.UserID = "SYSDBA";
            conStr.Password = "masterkey";
            //conStr.DataSource = "127.0.0.1";
            conStr.Charset = "UTF8";
            conStr.Dialect = 3;
            conStr.ServerType = FbServerType.Default;

            FirebirdConfiguration cfg = new FirebirdConfiguration()
                .ConnectionString(conStr.ConnectionString)
                .AdoNetBatchSize(100);
            return Fluently.Configure()
                .Database(cfg)
                .Mappings(m => m.FluentMappings.AddFromAssemblyOf())
                .ExposeConfiguration(BuildSchema)
                .BuildSessionFactory();
        }
Now you are ready to run your code

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

Alfresco กับการ Search ภาษาไทย

เนื่องด้วยการ Search ถือเป็นหัวใจสำคัญของงาน ECM เลยก็ว่าได้ แต่ Alfresco ณ ปัจจุบันยังไม่รองรับการ Search ด้วยภาษาไทย แต่อย่างว่า Opensource เมื่อเรารู้ว่ามันใช้ Lucene เป็น engine ในการค้นหาเอกสาร เราก็เลยแงะไปยังตัว lucene เองพบว่ามีคนส่ง Patch ในการตัดคำไทย ไปให้กับ lucene เรียบร้อยแล้ว โดยคุณสัมพันธ์นั่นเอง วิธีการ Config ให้ Alfresco ตัดคำไทยได้ผมสรุปออกมาเป็นขั้นตอนได้ดังนี้ครับ ไปเพิ่ม Locale ให้ Alfresco รู้จัก ใน tomcat/shared/classes/alfresco/extension/web-client-config-custom.xml ตรง tag <languages> เพิ่ม <language locale="th_TH">Thai</language> เข้าไป directory: tomcat/webapps/alfresco/WEB-INF/classes/alfresco/model แล้วทำการ copy file dataTypeAnalyzers_fr.properties หรือไฟล์อื่นก็ได้ เปลี่ยนชื่อเป็น dataTypeAnalyzers_th.properties แล้วเปิดไฟล์ขึ้นมาแก้ไขให้เป็น d_dictionary.datatype.d_text.analyzer=org.apache.lucene.analysis.th.ThaiAnalyzer d_dictionary.datatype.d_content.analyzer=org.apache.lucene.analysis.th.ThaiAnalyzer หลังจากนั้นเมื่อทำการ...

Spring Roo vs Grails

Spring Roo หรือ Grails ดี ถ้าต้องเลือกระหว่างสองตัวนี้จะเลือกอะไรดี คำตอบแบ่งออกได้เป็นสองส่วน ส่วนแรกคือภาษาที่ถนัด หากใครเขียน Java อยู่แล้วไม่อยากเปลี่ยนก็ควรจะเลือก Spring Roo หากใครต้องการ magic ที่มากับ Dynamic Language ก็คิดว่าน่าจะใช้ Grails มากกว่า ส่วนที่สองคือ ความเร็วในการพัฒนาเนื่องจาก magic ที่มาจากภาษา Groovy ทำให้เราพัฒนา Application ได้เร็วกว่าภาษา Java (แต่อันนี้ก็แล้วแต่ความถนัก หากถนัด Java มากๆ ก็อาจจะเร็วกว่าก็ได้) แต่ส่วนที่คิดว่าเร็วกว่าแน่ๆ คือมันจะ Generate Method ส่วนใหญ่ให้ในขณะ Runtime เช่น findBookById() ซึ่งจะไม่มีโค้ดในส่วนนี้แต่จะเป็นการ Generate ให้เองจากตัว Framework แต่หากใช้ Spring Roo เราต้องมานั่งเขียน Method ส่วนนี้เอง ข้อดี ข้อเสีย Grails อย่างที่รู้ว่า Groovy นั้นจะ Generate Method ระหว่าง Runtime ให้และยังเป็นภาษา Script แม้จะมีการ Compile ให้เป็น Bytecode ของจาวาแล้วก็ตาม แต่ Performance ก็จะด้อยกว่า Pure Java อยู่ดี Spring Roo จะช้าในช่วง Develop time แต่ขณะ Runtime จะมี Performance ดีกว่า Grails เนื่องจากไม่มีส่วนที่ต้องสร้างขึ้นระหว่าง ...

เปลี่ยนเว็บเดิมให้ Pluggable ด้วย OSGi

เป็นบทความภาษาอังกฤษครับลองอ่านดู เปลี่ยน Web application เดิมให้ยืดหยุ่นด้วย OSGi เพิ่มเติ่มให้ครับ OSGi คืออะไร เป็น Specification ครับที่เจ้าใหญ่ของ Java เค้าทำมาเพื่อให้เกิดความเป็น modularized ครับ ซึ่งถ้าจะให้เห็นภาพคือการทำงานของ plugin น่ะครับ ที่เราสามารถเปิดปิดการทำงานของมันได้ตลอดเวลาเมื่อเอามาใส่ web application ก็ทำให้เราสามารถถอดหรือเสียบ plugin ใหม่ๆ ได้ตลอดเวลา โดยที่ plugin นี้ใน OSGi จะเรียกว่า module ครับ หรือถ้าเป็นศัพท์เทคนิคเค้าจะเรียกว่า Bundle ครับ ลองไปอ่านบทความกันดูครับ ซึ่ง OSGi นั้นจริงๆ แล้วมันเป็น Specification เหมือนกับ EJB หรือ Servlet นี่แหละครับ แต่ตัว implement นั้นแล้วแต่ว่าใครจะนำไป implement นะครับ ที่ดังๆ อยู่ในตอนนี้ก็เห็นมีอยู่สองสามเจ้า Equinox อันนี้หลายๆ คนคงจะคุ้นเคยกันดีมันคือเจ้า eclipse ของเรานั่นเองใช้ตัวนี้อยู่ครับ ส่วนอีกตัวเป็นของ Apache Felix ครับ ลักษณะการใช้งานจะแตกต่างกันบาง และตัว module อาจจะเรียกไม่เหมือนกันบางอันเป็น Bundle บางอันอาจไม่ใช่ ผมก็จำไม่ได้แล้วเหมือนกันครับ ลองไปศึกษากันดูครับ น่าสนใจทีเดียว อีกตัวนั้นจะเป็นของ Sp...