NHibernate - การกำหนดค่า
ในบทนี้เราจะดูการกำหนดค่า NHibernate เรามีวิธีต่างๆในการกำหนดค่า NHibernate แบ่งออกเป็นสองกลุ่มหลัก
- การกำหนดค่าตาม XML
- การกำหนดค่าตามรหัส
การกำหนดค่าตามรหัส
การกำหนดค่าตามรหัสถูกสร้างขึ้นใน NHibernate ได้รับการแนะนำให้รู้จักกับ NHibernate 3 และเราได้ใช้การกำหนดค่าฐานรหัสจนถึงตอนนี้
String Data Source = asia13797\\sqlexpress;
String Initial Catalog = NHibernateDemoDB;
String Integrated Security = True;
String Connect Timeout = 15;
String Encrypt = False;
String TrustServerCertificate = False;
String ApplicationIntent = ReadWrite;
String MultiSubnetFailover = False;
cfg.DataBaseIntegration(x = > { x.ConnectionString = "Data Source +
Initial Catalog + Integrated Security + Connect Timeout + Encrypt +
TrustServerCertificate + ApplicationIntent + MultiSubnetFailover";
x.Driver<SqlClientDriver>();
x.Dialect<MsSql2008Dialect>();
x.LogSqlInConsole = true;
});
cfg.AddAssembly(Assembly.GetExecutingAssembly());
การกำหนดค่าทั้งหมดระบุไว้ในรหัส C # คุณสามารถเห็นได้ที่นี่ว่าเรามีวัตถุการกำหนดค่าใหม่จากนั้นเราใช้loquacious configurationที่นำมาใช้กับ NHibernate 3.1 เพื่อกำหนดค่าฐานข้อมูล เราใช้สตริงการเชื่อมต่ออะไรฐานข้อมูลใดที่เรากำลังเชื่อมต่อและภาษาถิ่นที่จะใช้ นอกจากนี้เรายังเพิ่มชุดประกอบการทำแผนที่ของเราโดยตรงที่นี่
การกำหนดค่าตาม XML
หากคุณใช้คอนฟิกูเรชันแบบ XML คุณสามารถใช้ไฟล์ hibernate.cfg.xml ซึ่งเป็นเพียงไฟล์ xml แบบสแตนด์อโลนโดยใช้สคีมา NHibernate หรือคุณสามารถฝังการกำหนดค่าเฉพาะของ NHibernate ภายในแอปของคุณหรือ web.cfg. ชื่อ hibernate.cfg.xml เป็นค่าเริ่มต้น แต่เราสามารถใช้ชื่อที่กำหนดเองสำหรับไฟล์ xml นั้นได้เช่นกัน
มาดูการกำหนดค่าที่ใช้ XML โดยการเพิ่มไฟล์ xml ใหม่ในโปรเจ็กต์ NHibernateDemoApp และเรียกมันว่า hibernate.cfg.xml
ป้อนข้อมูลต่อไปนี้ลงในไฟล์ hibernate.cfg.xml
<?xml version = "1.0" encoding = "utf-8" ?>
<hibernate-configuration xmlns = "urn:nhibernate-configuration-2.2">
<session-factory>
<property name = "connection.connection_string">
Data Source = asia13797\\sqlexpress;
Initial Catalog = NHibernateDemoDB;
Integrated Security = True;
Connect Timeout = 15;
Encrypt = False;
TrustServerCertificate = False;
ApplicationIntent = ReadWrite;
MultiSubnetFailover = False;
</property>
<property name = "connection.driver_class">
NHibernate.Driver.SqlClientDriver
</property>
<property name = "dialect">
NHibernate.Dialect.MsSql2008Dialect
</property>
<mapping assembly = "NHibernateDemoApp"/>
</session-factory>
</hibernate-configuration>
ดังที่คุณเห็นในไฟล์ xml ด้านบนเราได้ระบุการกำหนดค่าเดียวกันกับที่กล่าวไว้ใน C #
ตอนนี้ให้แสดงความคิดเห็นเกี่ยวกับการกำหนดค่านี้จากไฟล์ Program.cs และเรียกไฟล์ Configure() ซึ่งจะโหลดไฟล์ hibernate.cfg.xml ไฟล์ดังที่แสดงด้านล่าง
using HibernatingRhinos.Profiler.Appender.NHibernate;
using NHibernate.Cfg;
using NHibernate.Dialect;
using NHibernate.Driver;
using System;
using System.Linq;
using System.Reflection;
namespace NHibernateDemoApp {
class Program {
static void Main(string[] args) {
NHibernateProfiler.Initialize();
var cfg = new Configuration();
//cfg.DataBaseIntegration(x =>
//{
// x.ConnectionString = "Data Source = asia13797;\\sqlexpress
Initial Catalog = NHibernateDemoDB;
Integrated Security = True;
Connect Timeout = 15;
Encrypt =False;
TrustServerCertificate = False;
ApplicationIntent = ReadWrite;
MultiSubnetFailover = False";
// x.Driver<SqlClientDriver>();
// x.Dialect<MsSql2008Dialect>();
// x.LogSqlInConsole = true;
//});
//cfg.AddAssembly(Assembly.GetExecutingAssembly());
cfg.Configure();
var sefact = cfg.BuildSessionFactory();
using (var session = sefact.OpenSession()) {
using (var tx = session.BeginTransaction()) {
var students = session.CreateCriteria<Student>().List<Student>();
Console.WriteLine("\nFetch the complete list again\n");
foreach (var student in students) {
Console.WriteLine("{0} \t{1} \t{2} \t{3}", student.ID,
student.FirstName, student.LastName, student.AcademicStanding);
}
tx.Commit();
}
Console.ReadLine();
}
}
}
}
ลองเรียกใช้แอปพลิเคชันของคุณอีกครั้งและคุณจะเห็นผลลัพธ์เดียวกัน
Fetch the complete list again
1 Allan Bommer Excellent
2 Jerry Lewis Good