<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>روزنوشت‌های الهام محمدنژاد</title>
	<atom:link href="http://nhibernate.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://nhibernate.wordpress.com</link>
	<description>Elham Mohammad Nezhad Persoanl Weblog</description>
	<lastBuildDate>Wed, 19 Jan 2011 12:37:01 +0000</lastBuildDate>
	<language>fa</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='nhibernate.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>روزنوشت‌های الهام محمدنژاد</title>
		<link>http://nhibernate.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://nhibernate.wordpress.com/osd.xml" title="روزنوشت‌های الهام محمدنژاد" />
	<atom:link rel='hub' href='http://nhibernate.wordpress.com/?pushpress=hub'/>
		<item>
		<title>شروع کار با Fluent NHibernate با یک نمونه کد</title>
		<link>http://nhibernate.wordpress.com/2009/12/08/fluent-nhibernate-with-sample/</link>
		<comments>http://nhibernate.wordpress.com/2009/12/08/fluent-nhibernate-with-sample/#comments</comments>
		<pubDate>Tue, 08 Dec 2009 16:15:03 +0000</pubDate>
		<dc:creator>nhibernate</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://nhibernate.wordpress.com/?p=105</guid>
		<description><![CDATA[اگر Fluent NHibernate را downdoad کرده‌اید آنرا اجرا کنید. وگر نه با استفاده از این لینک آن را دانلود کنید. در این مثال ما یک domain ساده را برای یک کمپانی خرده‌فروشی در نظرگرفته‌ایم. فروشگاه کارمند و کالا دارد که هر کدام با یکدیگر ارتباط دارند. برای روشن شدن مسئله شکل زیر را ملاحظه کنید. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nhibernate.wordpress.com&amp;blog=6580096&amp;post=105&amp;subd=nhibernate&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>اگر Fluent NHibernate را downdoad کرده‌اید آنرا اجرا کنید. وگر نه با استفاده از این لینک آن را دانلود کنید.</p>
<p>در این مثال ما یک domain ساده را برای یک کمپانی خرده‌فروشی در نظرگرفته‌ایم. فروشگاه کارمند و کالا دارد که هر کدام با یکدیگر ارتباط دارند. برای روشن شدن مسئله شکل زیر را ملاحظه کنید.</p>
<p>ابتدا یک console Application ایجاد کنید و fluent NHibernate.dll را به آن ارجاع دهید. و هر کدام از نسخه‌های NHibernate را که تمایل داشتید در آن قرار دهید. برای این مثال ما از دیتابیس SQLite استفاده می‌کنیم. همچنین شما به کتابخانهٔ  System.Data.SQLite که با fluent NHibernate ساخته شده است نیز نیاز دارید.</p>
<p>شما می‌توانید ساختار پروژه را در شکل روبرو ببینید. پوشهٔ Entities بخش واقعی آبجکت‌هاست و پوشهٔ mappings محل قرارگیری کلاس‌های mapping شما است.</p>
<p>پوشه Enteties :</p>
<p>اجازه دهید با ساخت entity ها شروع کنیم. ما سه جدول داریم که با هم ارتباط دارند و باید مپ شوند. برای هر کدام، کلاسی جداگانه و مخصوص به خود را در پوشهٔ Enteties می‌سازیم.</p>
<p>ابتدا با کلاس employee کارمان را آغاز می‌کنیم.</p>
<p><pre class="brush: xml;">
public class Employee
{
public virtual int Id { get; private set; }
public virtual string FirstName { get; set;}
public virtual string LastName { get; set; }
public virtual Store Store { get; set; }
}
</pre></p>
<p>همانطور که ملاحظه می‌کنید به ازای تمام فیلدهای جدول موجود در پایگاه داده، در این فایل یک صفت (property) داریم.</p>
<p>اگر شما با NHibernate ناآشنا هستید باید بدانید که دو چیز مهم و برجسته در اینجا وجود دارد. اول اینکه مشخصهٔ id به صورت private ، set شده است و این به این خاطر است که فقط NHibernate است که می‌تواند این مقدار را set کند. دوم اینکه همهٔ property ها virtual هستند، بخاطر اینکه NHibernate در حین اجرا از موجودیت‌ها proxy هایی می‌سازد که اجازه می‌دهد Lazy load باشد، یعنی اینکه قابلیت override را برای property ها داشته باشد.</p>
<p>دو کلاس دیگر را هم به صورت زیر می‌سازیم. (توجه کنید که به ازای فیلدهای جدول خودشان و با Type های صحیح اقدام به ایجاد صفت کنید، درغیر این صورت شما با مشکل روبرو خواهید شد. )</p>
<p>پیاده سازی کلاس محصول</p>
<p><pre class="brush: xml;">
public class Product
{
 public virtual int Id { get; private set; }
 public virtual string Name { get; set; }
 public virtual double Price { get; set; }
 public virtual IList&lt;Store&gt; StoresStockedIn { get; private set;{
 public Product()   //constructor
 {
 StoresStockedIn = new List&lt;Store&gt;();
 }
}
public class Store
{
 public virtual int Id { get; private set; }
 public virtual string Name { get; set; }
 public virtual IList&lt;Product&gt; Products { get; set; }
 public virtual IList&lt;Employee&gt; Staff { get; set; }
&lt;pre&gt;</pre></p>
<p> پیاده سازی کلاس خرده‌فروشی (مغازه)<br />
<pre class="brush: xml;">

&lt;/pre&gt;
public Store()
 {
 Products = new List&lt;Product&gt;();
 Staff = new List&lt;Employee&gt;();
 }
public virtual void AddProduct(Product product)
 {
 product.StoresStockedIn.Add(this);
 Products.Add(product);
 }

 public virtual void AddEmployee(Employee employee)
 {
 employee.Store = this;
 Staff.Add(employee);
 }
}
</pre></pre>
<p>متدهای add employee و add product کمی به ساده‌تر شددن کد ما کمک می‌کنند. این متدها برای اضافه کردن یک item به collection و تنظیم کردن سمت دیگر رابطه استفاده می‌شوند. (برای اضافه کردن کالا و کارمند به فروشگاه)<br />
پوشه Mappings :<br />
حالا که entity ها را ساختیم وقت آن رسیده که آنها را با استفاده از fluent NHibernate مپ کنیم. با یک کلاس ساده مثل employee شروع می‌کنیم. Mapper های زیر باید در پوشهٔ mappings ساخته شوند.<br />
برای مپ کردن هر entity شما باید یک کلاس مپ اختصاصی برایش ایجاد کنید. این کلاس مپینگ‌ها از ClassMapp&lt;T&gt; به ارث می‌روند و T ، درواقع نام entity ی ورودی شما است.</p>
<p><pre class="brush: xml;">
public class EmployeeMap : ClassMap&lt;Employee&gt;
{
 public EmployeeMap()
 {
 Id(x =&gt; x.Id);
 Map(x =&gt; x.FirstName);
 Map(x =&gt; x.LastName);
 References(x =&gt; x.Store);
 }
}
</pre></p>
<p>ستون id یک شناسه برای fluent NHibernate است و x مثالی از یک نمونه از employee است که fluent NHibernate از آن برای بدست آوردن جزئیات property ها استفاده می‌کند.</p>
<p><pre class="brush: xml;">
public class StoreMap : ClassMap&lt;Store&gt;
{
 public StoreMap()
 {
 Id(x =&gt; x.Id);
 Map(x =&gt; x.Name);
 HasMany(x =&gt; x.Staff).Inverse().Cascade.All();
 HasManyToMany(x =&gt; x.Products).Cascade.All().WithTableName(&quot;StoreProduct&quot;);
 }
}
</pre></p>
<p>همان طور که ملاحضه می‌کنید در اینجا فراخوان‌های دیگری نیز به چشم می‌خورد. اگر employee را بخاطر بیاورید در آنجا یک ارتباط یک به چند با store داشتیم. حالا هم در مپ کردن store باید این ارتباط را نیز در نظر بگیریم. HasMany یک ارتباط یک به چند را با employee برقرار می‌کند. در اینجا یک متد جدید HasManyToMany وجود دارد که ارتباط چند به چند با product را ایجاد می‌نماید.<br />
Inverse در HasMany یک عبارت (کلمه کلیدی) در NHibernate است و در پایان ارتباط مسئولیت save را به عهده دارد.<br />
CascadeAll در HasManyToMany به NHibernate می‌گوید که در سلسلهٔ آبشاری عمل save را انجام دهد.<br />
WithTableName نام طرف دیگر ارتباط را در چند به چند مشخص می‌کند. برای سایر ارتباطات به وجود این قسمت نیاز نمی‌باشد.</p>
<p><pre class="brush: xml;">
public class ProductMap : ClassMap&lt;Product&gt;
{
 public ProductMap()
 {
 Id(x =&gt; x.Id);
 Map(x =&gt; x.Name);
 Map(x =&gt; x.Price);
 HasManyToMany(x =&gt; x.StoresStockedIn).Cascade.All().Inverse().WithTableName(&quot;StoreProduct&quot;);
 }
}
</pre></p>
<p>Application :<br />
در این بخش data ها مقداردهی اولیه می‌شوند.</p>
<p><pre class="brush: xml;">
static void Main()
{
 var sessionFactory = CreateSessionFactory();

 using (var session = sessionFactory.OpenSession())
 {
 using (var transaction = session.BeginTransaction())
 {
 // create a couple of Stores each with some Products and Employees
 var barginBasin = new Store { Name = &quot;Bargin Basin&quot; };
 var superMart = new Store { Name = &quot;SuperMart&quot; };

 var potatoes = new Product { Name = &quot;Potatoes&quot;, Price = 3.60 };
 var fish = new Product { Name = &quot;Fish&quot;, Price = 4.49 };
 var milk = new Product { Name = &quot;Milk&quot;, Price = 0.79 };
 var bread = new Product { Name = &quot;Bread&quot;, Price = 1.29 };
 var cheese = new Product { Name = &quot;Cheese&quot;, Price = 2.10 };
 var waffles = new Product { Name = &quot;Waffles&quot;, Price = 2.41 };

 var daisy = new Employee { FirstName = &quot;Daisy&quot;, LastName = &quot;Harrison&quot; };
 var jack = new Employee { FirstName = &quot;Jack&quot;, LastName = &quot;Torrance&quot; };
 var sue = new Employee { FirstName = &quot;Sue&quot;, LastName = &quot;Walkters&quot; };
 var bill = new Employee { FirstName = &quot;Bill&quot;, LastName = &quot;Taft&quot; };
 var joan = new Employee { FirstName = &quot;Joan&quot;, LastName = &quot;Pope&quot; };

 // add products to the stores, there's some crossover in the products in each
 // store, because the store-product relationship is many-to-many
 AddProductsToStore(barginBasin, potatoes, fish, milk, bread, cheese);
 AddProductsToStore(superMart, bread, cheese, waffles);

 // add employees to the stores, this relationship is a one-to-many, so one
 // employee can only work at one store at a time
 AddEmployeesToStore(barginBasin, daisy, jack, sue);
 AddEmployeesToStore(superMart, bill, joan);

 // save both stores, this saves everything else via cascading
 session.SaveOrUpdate(barginBasin);
 session.SaveOrUpdate(superMart);

 transaction.Commit();
 }

 // retreive all stores and display them
 using (session.BeginTransaction())
 {
 var stores = session.CreateCriteria(typeof(Store))
 .List&lt;Store&gt;();

 foreach (var store in stores)
 {
 WriteStorePretty(store);
 }
 }

 Console.ReadKey();
 }
}

public static void AddProductToStore(Store store, params Product[] products)
{
 foreach (var product in products)
 {
 store.AddProduct(product);
 }
}

public static void AddEmployeeToStore(Store store, params Employee[] employees)
{
 foreach (var employee in employees)
 {
 store.AddEmployee(employee);
 }
}
</pre></p>
<p>اما شما الان قادر به run  کردن برنامه نیستید زیرا ما نیاز داریم متد CreateSessionFactory را پیاده سازی کنیم.</p>
<p><pre class="brush: xml;">
private static ISessionFactory CreateSessionFactory()
{
 return Fluently.Configure()
.Database(
 SQLiteConfiguration.Standard
 .UsingFile(&quot;firstProject.db&quot;)
 )
 .Mappings(m =&gt;
 m.FluentMappings.AddFromAssemblyOf&lt;Program&gt;())
 .BuildSessionFactory();
}
</pre></p>
<p>اگر شما برای برنامه نمی‌خواهید که Schema را دستی تهیه کنید، اجرای دفعهٔ اول fail می‌شود. و آن به این خاطر است که یک چیز دیگر در آبجکت NHibernate configuration نیاز دارید و آن متد expose configuration  است . با استفاده از آن شما قادرید در زمان اجرا (Run Time) Schema را بسازید. (اگر مایلید که این کار را انجام دهید) کد را به صورت زیر تغییر بدهید.</p>
<p><pre class="brush: xml;">
private static ISessionFactory CreateSessionFactory()
{
 return Fluently.Configure()
 .Database(
 SQLiteConfiguration.Standard
 .UsingFile(&quot;firstProject.db&quot;)
 )
 .Mappings(m =&gt;
 m.FluentMappings.AddFromAssemblyOf&lt;Program&gt;())
 .ExposeConfiguration(BuildSchema)
 .BuildSessionFactory();
}

private static void BuildSchema(Configuration config)
{
 // delete the existing db on each run
 if (File.Exists(DbFile))
 File.Delete(DbFile);
 // this NHibernate tool takes a configuration (with mapping info in)
 // and exports a database schema from it
 new SchemaExport(config)
 .Create(false, true);
}
</pre></p>
<p>با استفاده از کد بالا Schema شما بصورت RunTime ایجاد می‌شود و شما لازم نیست که بصورت دستی Schema را ایجاد نمایید.<br />
شما میتوانید نمونه‌های بیشتری از fluent configuration  را در این لینک مشاهده کنید.<br />
لینک‌های استفاده شده برای تهیهٔ این مطلب :</p>
<p>http://wiki.fluentnhibernate.org/show/HomePage</p>
<p>http://wiki.fluentnhibernate.org/show/GettingStarted:+First+Project</p>
<p>http://wiki.fluentnhibernate.org/show/FluentConfiguration</p>
<br />نوشته شده در Programming  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nhibernate.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nhibernate.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nhibernate.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nhibernate.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nhibernate.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nhibernate.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nhibernate.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nhibernate.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nhibernate.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nhibernate.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nhibernate.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nhibernate.wordpress.com/105/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nhibernate.wordpress.com/105/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nhibernate.wordpress.com/105/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nhibernate.wordpress.com&amp;blog=6580096&amp;post=105&amp;subd=nhibernate&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nhibernate.wordpress.com/2009/12/08/fluent-nhibernate-with-sample/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/126a9e3f7ba67d39a4b7e17302d0b419?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">nhibernate</media:title>
		</media:content>
	</item>
		<item>
		<title>Fluent NHibernate چیست؟</title>
		<link>http://nhibernate.wordpress.com/2009/07/30/what-is-fluent-nhibernate/</link>
		<comments>http://nhibernate.wordpress.com/2009/07/30/what-is-fluent-nhibernate/#comments</comments>
		<pubDate>Thu, 30 Jul 2009 04:16:29 +0000</pubDate>
		<dc:creator>nhibernate</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Fluent NHibernate]]></category>
		<category><![CDATA[NHibernate]]></category>
		<category><![CDATA[ORM]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://nhibernate.wordpress.com/?p=98</guid>
		<description><![CDATA[Fluent NHibernate نیز مانند NHibernate یک برنامۀ open source است که برای map کردن کلاس ها به جداول database مورد استفاده قرار می‌گیرد. FluentNHibernate پیشنهاد می‌کندکه بجای نوشتن کد xml تحت عنوان (.hbm.xml files) از کدC# استفاده کنید.این باعث می‌شود کدنویسی ساده‌تر شده و قابلیت خواندن کدها بهبود یابد و البته کد کوتاه‌تر شود. همانطور [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nhibernate.wordpress.com&amp;blog=6580096&amp;post=98&amp;subd=nhibernate&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="direction:rtl;text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;">
<div id="attachment_100" class="wp-caption aligncenter" style="width: 370px"><img class="size-full wp-image-100" title="Fluent_Nhibernate_logo" src="http://nhibernate.files.wordpress.com/2009/07/fluent_nhibernate_logo.png?w=600" alt="Fluent NHibernate Logo"   /><p class="wp-caption-text">Fluent NHibernate Logo</p></div>
<p style="direction:rtl;text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;">Fluent NHibernate نیز مانند NHibernate یک برنامۀ open source است که برای map کردن کلاس ها به جداول database مورد استفاده قرار می‌گیرد.</p>
<p style="direction:rtl;text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;">FluentNHibernate پیشنهاد می‌کندکه بجای نوشتن کد xml تحت عنوان (.hbm.xml files) از کدC# استفاده کنید.این باعث می‌شود کدنویسی ساده‌تر شده و قابلیت خواندن کدها بهبود یابد و البته کد کوتاه‌تر شود.</p>
<p style="direction:rtl;text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;">همانطور که می‌دانید در استفاده از NHibernate به عنوان یک OR Mapper برای مپ کردن کلاسها به جداول از فایل‌های xml استفاده می‌شود.اما Fluent NHibernate چیز دیگری را پیشنهاد می‌کند.اما چرا؟</p>
<p style="direction:rtl;text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;">فایل xml خوب است اما چند مورد نامطلوب در مورد آن وجود دارد:</p>
<ol style="direction:rtl;text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;">
<li> به علت اینکه xml بوسیله‌ٔ کامپایلر ارزیابی نمی‌شود‌،شما می‌توانید در کلاسهایتان نام property ها را تغییر دهید ولی آنها در فایل‌های mapping ، update نمی‌شوند. و شما این تغییر را تا زمان اجرا متوجه نمی‌شوید.</li>
<li> فایل xml زیادی طولانی است.گرچه NHibernate به تدریج از element های اجباریxml کاسته اما شما هنوز از این درازنویسی رها نشده‌اید.</li>
<li> Mapping های تکراری-فایل‌های hbm در NHibernate می‌توانند کاملاً طولانی شوند اگر شما برای هر یک قوانینی تعین کنید.مثل اینکه بخواهید همهٔ string ها not-null باشند.</li>
</ol>
<p style="direction:rtl;text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;">حالا Fluent NHibernate چگونه با این مسا‌ئل برخورد می‌کند:</p>
<p style="direction:rtl;text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;">می‌توانید mapping هاتان را به سمت کد واقعی حرکت دهید پس آنها در تمام application کامپایل می‌شوند و اگر تغییراتی را اعمال کنید کامپایلر در لحظه اخطار می‌دهد و یا با refactory تغییرات را اعمال می‌کند. و برای بازنویسی قوانین نحوه‌ای را پیشنهاد می‌کند که یک بار این قوانین نوشته شوند.</p>
<p style="direction:rtl;text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;">به نمونه کد زیر توجه کنید.</p>
<p style="background-color:#ebebeb;direction:ltr;text-align:left;font-family:'Courier New',Terafik,Tahoma;font-size:12pt;padding:10px;">public class CatMap : ClassMap<br />
{<br />
public CatMap()<br />
{<br />
Id(x =&gt; x.Id);<br />
Map(x =&gt; x.Name).WithLengthOf(16).Not.Nullable();<br />
Map(x =&gt; x.Sex);<br />
References(x =&gt; x.Mate);<br />
HasMany(x =&gt; x.Kittens);<br />
}<br />
}</p>
<p style="direction:rtl;text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;">Fluent NHibernate را می‌توانید از <a href="http://fluentnhibernate.org/downloads" target="_blank"><strong>سایت رسمی</strong>‌اش به این آدرس</a></p>
<p style="direction:rtl;text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;">و یا از سرورهای <a href="http://code.google.com/p/fluent-nhibernate" target="_blank"><strong>گوگل کد</strong> در این آدرس</a> دریافت نمایید.</p>
<br />نوشته شده در Programming Tagged: Fluent NHibernate, NHibernate, ORM, XML <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nhibernate.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nhibernate.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nhibernate.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nhibernate.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nhibernate.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nhibernate.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nhibernate.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nhibernate.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nhibernate.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nhibernate.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nhibernate.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nhibernate.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nhibernate.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nhibernate.wordpress.com/98/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nhibernate.wordpress.com&amp;blog=6580096&amp;post=98&amp;subd=nhibernate&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nhibernate.wordpress.com/2009/07/30/what-is-fluent-nhibernate/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/126a9e3f7ba67d39a4b7e17302d0b419?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">nhibernate</media:title>
		</media:content>

		<media:content url="http://nhibernate.files.wordpress.com/2009/07/fluent_nhibernate_logo.png" medium="image">
			<media:title type="html">Fluent_Nhibernate_logo</media:title>
		</media:content>
	</item>
		<item>
		<title>NHibernate 2.1 عرضه شد</title>
		<link>http://nhibernate.wordpress.com/2009/07/26/how-to-upgrade-nhibernate-2-0-to-nhibernate-2-1/</link>
		<comments>http://nhibernate.wordpress.com/2009/07/26/how-to-upgrade-nhibernate-2-0-to-nhibernate-2-1/#comments</comments>
		<pubDate>Sun, 26 Jul 2009 11:06:10 +0000</pubDate>
		<dc:creator>nhibernate</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[معرفی]]></category>
		<category><![CDATA[NHibernate 2.0]]></category>
		<category><![CDATA[NHibernate 2.1]]></category>
		<category><![CDATA[Proxy Factory]]></category>
		<category><![CDATA[ProxyFactory]]></category>
		<category><![CDATA[Web.Config]]></category>

		<guid isPermaLink="false">http://nhibernate.wordpress.com/?p=94</guid>
		<description><![CDATA[همانطور که می‌دانید دیروز یعنی در مورخهٔ 2009/25/7 ورژن 2.1 ، NHibernate  عرضه شد. در صورت تمایل می‌توانید از این لینک برای Download استفاده کنید. اگر شما تا حالا با NHibernate 2.0 کار می‌کردید و حالا می‌خواهید آن را به نسخه جدید upgrade  کنید. اگر برای این کار فقط فایل‌های dll را تغییر دهید و [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nhibernate.wordpress.com&amp;blog=6580096&amp;post=94&amp;subd=nhibernate&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="font-family:Terafik;text-align:justify;font-size:12pt;">همانطور که می‌دانید دیروز یعنی در مورخهٔ 2009/25/7 ورژن 2.1 ، NHibernate  عرضه شد. در صورت تمایل می‌توانید از <a href="http://sourceforge.net/projects/nhibernate/files/">این لینک برای Download</a> استفاده کنید.</p>
<p style="font-family:Terafik;font-size:12pt;">اگر شما تا حالا با NHibernate 2.0 کار می‌کردید و حالا می‌خواهید آن را به نسخه جدید upgrade  کنید. اگر برای این کار فقط فایل‌های dll را تغییر دهید و برنامه را اجرا کنید به error زیر برمی‌خورید.</p>
<p style="background-color:#ebebeb;color:red;font-family:Terafik;font-size:12pt;padding:10px;" dir="ltr">The ProxyFactoryFactory was not configured.</p>
<p style="font-family:Terafik;font-size:12pt;">برای رفع این مشکل باید صفت ‘proxyfactory.factory_class’ را از بخش session-factory   در Web.Config برنامه با یک NHibernate.ByteCode مقدار دهی اولیه کنید.</p>
<p style="font-family:Terafik;font-size:12pt;">برای این کار به روش زیر عمل کنید:</p>
<p style="font-family:Terafik;font-size:12pt;">فایل Web.Config را باز کرده</p>
<p style="font-family:Terafik;font-size:12pt;">بخش مربوط به NHibernate را در آن پیدا کنید و صفت زیر را به آن اضافه کنید.</p>
<p style="background-color:#ebebeb;font-family:Terafik;font-size:12pt;padding:10px;" dir="ltr">&lt;property name=’proxyfactory.factory_class’&gt;NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu&lt;/property&gt;</p>
<p style="font-family:Terafik;font-size:12pt;">همچنین می‌توانید بصورت زیر نیز عمل کنید:</p>
<p style="background-color:#ebebeb;font-family:Terafik;font-size:12pt;padding:10px;" dir="ltr">&lt;property name=’proxyfactory.factory_class’&gt;NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle&lt;/property&gt;</p>
<p style="font-family:Terafik;font-size:12pt;">همانطور که ملاحظه کردید . پیش از این NHibernate  بطور پیش فرض از Castles Dynamic proxy برای generate ، proxy های runtime استفاده می‌کرد اما در نسخه جدید شما می‌توانید از هر نمونه دلخواهی استفاده کنید و به همین دلیل باید آن را در تنظیمات برنامه اضافه کنید.</p>
<p style="background-color:#ebebeb;font-family:Terafik;font-size:12pt;padding:10px;" dir="ltr">&lt;property name=&#8221;proxyfactory.factory_class&#8221;&gt;NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle&lt;/property&gt;</p>
<p style="font-family:Terafik;font-size:12pt;">اگر هم می‌خواهید از proxy factory دیگری استفاده کنید، دقت کنید که آن را به صورت صحیح اضافه کنید.</p>
<p style="font-family:Terafik;font-size:12pt;"><strong>لینک‌های مرتبط و منابع</strong></p>
<p style="font-family:Terafik;font-size:12pt;"><a href="http://sourceforge.net/projects/nhibernate/files/">دانلود فایلها و سورس Nhibernate از سرور SourceForge</a></p>
<p style="font-family:Terafik;font-size:12pt;"><a href="http://davybrion.com/blog/2009/03/upgrading-to-nhibernate-21/" target="_blank">رفع مشکل بروزرسانی NHibernate از نسخه ۲.۰ به نسخه ۲.۱ </a></p>
<br />نوشته شده در Programming, معرفی Tagged: NHibernate 2.0, NHibernate 2.1, Proxy Factory, ProxyFactory, Web.Config <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nhibernate.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nhibernate.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nhibernate.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nhibernate.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nhibernate.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nhibernate.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nhibernate.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nhibernate.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nhibernate.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nhibernate.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nhibernate.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nhibernate.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nhibernate.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nhibernate.wordpress.com/94/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nhibernate.wordpress.com&amp;blog=6580096&amp;post=94&amp;subd=nhibernate&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nhibernate.wordpress.com/2009/07/26/how-to-upgrade-nhibernate-2-0-to-nhibernate-2-1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/126a9e3f7ba67d39a4b7e17302d0b419?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">nhibernate</media:title>
		</media:content>
	</item>
		<item>
		<title>ساخت، load و ذخیره کردن آبجکت‌ها در NHibernate</title>
		<link>http://nhibernate.wordpress.com/2009/07/07/how-to-create-load-and-save-objects-in-nhibernate/</link>
		<comments>http://nhibernate.wordpress.com/2009/07/07/how-to-create-load-and-save-objects-in-nhibernate/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 09:28:18 +0000</pubDate>
		<dc:creator>nhibernate</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Create]]></category>
		<category><![CDATA[DataBase]]></category>
		<category><![CDATA[ISession]]></category>
		<category><![CDATA[Load]]></category>
		<category><![CDATA[Net Framework]]></category>
		<category><![CDATA[NHibernate]]></category>
		<category><![CDATA[Object]]></category>
		<category><![CDATA[ORM]]></category>
		<category><![CDATA[Save]]></category>
		<category><![CDATA[Transaction]]></category>

		<guid isPermaLink="false">http://nhibernate.wordpress.com/?p=92</guid>
		<description><![CDATA[از آنجایی که هدف از session فراهم کردن مکانیزمی برای مدیریت کارایی برنامۀ شماست و در حقیقت این مدیریت برای پیشگیری از round trip ها در DataBase است، منطقی است که عملیات روی session همیشه نتیجۀ عملیات زیرساختی DataBase نیست (نباشد). در حقیقت آن یک اشاره‌گر به session برای cache کردن عملیات است تا اینکه [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nhibernate.wordpress.com&amp;blog=6580096&amp;post=92&amp;subd=nhibernate&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div style="font-family:Terafik,Tahoma;text-align:justify;font-size:12pt;direction:rtl;">از آنجایی که هدف از session فراهم کردن مکانیزمی برای مدیریت کارایی برنامۀ شماست و در حقیقت این مدیریت برای پیشگیری از round trip ها در DataBase است، منطقی است که عملیات روی session همیشه نتیجۀ عملیات زیرساختی DataBase نیست (نباشد). در حقیقت آن یک اشاره‌گر به session برای cache  کردن عملیات است تا اینکه آنها بتوانند در دیتابیس ذخیره شوند، بدینگونه round trip ها ذخیره می شوند. همۀ اینها بدین معنی است که وقتی که شما یک متد پایدار را در session صدا می کنید، با تغییرات آنی در database ممکن است که جواب بدهد یا ندهد.</div>
<div style="font-family:Terafik,Tahoma;text-align:justify;font-size:12pt;direction:rtl;">معمولا تغییرات فقط هنگامی در دیتابیس ذخیره می شوند که متد session’s flush() صدا زده شوند.شما می توانید مستقیما این را انجام دهید.اما بیشتر رایج است که flush() را در پایان عملیات صدا کنیم.</div>
<div style="font-family:Terafik,Tahoma;text-align:justify;font-size:12pt;direction:rtl;">اگر شما یک برنامۀ دیتابیسی ساخته باشید اما به این تراکنش‌ها علاقمند نباشید، باید زمانی را به بهبود طرحتان اختصاص دهید. لازم است که وقتی که حتی Query‌ها را دستی می‌نویسید مطمئن باشید که واحد اتمیک تغییرات را به دیتابیس اعمال می کند. این قضیه اهمیت بیشتری پیدا می کند وقتی که از لایۀ ORM ی مانند NHibernate استفاده می شود. زیرا یک دستورالعمل ساده مانند save(dept) می‌تواند تغییر حاصله را در چندین بخش از دیتابیس مانند professor ،classes و یا روی join table ها اعمال کند. اگر هر کدام از این تغییرات fail شود و شما هیچ مدیریتی بر آنچه که می‌نویسید نداشته باشید، دیتابیس شما بلااستفاده رها خواهد شد. بنابراین زمانی که از NHibernate استفاده می کنید از session ها بدون تراکنش استفاده نکنید. الگوی استفاده رایج به این صورت می‌باشد:</p>
<div style="direction:ltr;text-align:left;background-color:#cdcdcd;padding:10px;">ISession session;<br />
ITransaction tx;<br />
try<br />
}<br />
session = factory.OpenSession();<br />
tx = session.BeginTransaction();<br />
// do database work<br />
tx.Commit();<br />
session.Close();<br />
{<br />
catch (Exception ex(<br />
}<br />
tx.Rollback();<br />
session.Close();<br />
// further exception handling<br />
{</div>
<p>نویسندگان مستندات Hibernate مصرانه پیشنهاد می‌کنند که هرگز یک exception را بازیابی نکنید زیرا بازیابی تراکنش به عنوان اولین قدم در handle  کردن Exception ها در ابتدای برنامه قرار دارند. این خیلی مهم است زیرا NHibernate به صورت آبشاری مدیریت می کند.<br />
جایی که به مشکل بخورند خودشان را نشان می‌دهند. بهترین نظر این است که همه چیز را به حالت اول برگردانید، در دامنه مدلتان مشکل را حل کنید و دوباره سعی کنید.<br />
بگذارید راجع به انواع رایج فعالیت‌ها برای object های ماندگارمان صحبت کنیم. خب، دیدید که پیاده‌سازی سه متد اول interface DBMgr در بالا نمایش داده شد.متد getDepartments() لیستی از بخش های ِDepartment را برمی گرداند.</p>
<div style="direction:ltr;text-align:left;background-color:#cdcdcd;padding:10px;">public IList getDepartments()<br />
{<br />
IList depts = null;<br />
try<br />
{<br />
ISession session = factory.OpenSession();<br />
ITransaction tx = session.BeginTransaction();<br />
depts = session.CreateCriteria(typeof(Department)).List();<br />
session.Close();<br />
}<br />
catch (Exception ex)<br />
{<br />
tx.Rollback();<br />
session.Close();<br />
// handle exception.<br />
}<br />
return depts;<br />
}</div>
<p>آبجکت session نشان می‌دهد متد createcriteria() که به عنوان آرگومان، یک نوع کلاس پایدار را می‌گیرد. این نشان می‌دهد که NHibernate با تبدیل های مپ شده به آبجکت ها فعل و انفعال‌ها را تندتر می‌کند. در نتیجه list() نتایج برگشتی از تمامی interface های موجود را برمی‌گرداند. در این مورد بهتر است یک لیست شامل خواصی از Department را برگردانیم.که با دیتابیس کاملا یکی است (شامل تمام دیگر آبجکت های مرتبط با department). این متد صریحی است که استفاده می‌شود که در دیتابیس شما در میان تمام  interface های کلاس تکرار می‌شود.<br />
اگر شما می خواهید interface مشخصی از database را تکرار کنید شما باید مقادیر مشخص از شناسه فیلدها را برای کلاس هدف بدانید که شما دنبال آن هستید.</p>
<div style="direction:ltr;text-align:left;background-color:#cdcdcd;padding:10px;">public Department getDepartment(int i)<br />
{<br />
Department d = null;<br />
try<br />
{<br />
ISession session = factory.OpenSession();<br />
ITransaction tx = session.BeginTransaction();<br />
d = (Department)session.Load(typeof(nhRegistration.Department), i);<br />
session.Close();<br />
}<br />
catch (Exception ex)<br />
{<br />
tx.Rollback();<br />
session.Close();<br />
// handle exception.	}<br />
return d;<br />
}</div>
<p>فقط به خاطر داشته باشید که نتایج session.load() را به یک نوع مناسب object ای که برمی‌گرداند cast کنید.<br />
در پایان آیا می‌خواهید تغییرات را در یک interface ذخیره کنید (یا یک interface جدید ایجاد کنید)؟ آیا session در متد برای شما session.save() را که برای ایجاد یک interface جدید به کار می‌رود در نظر گرفته است یا session update() که برای تغییر یک interface از session موجود به کار می رود؟ شما مجبورید که این دو را جدا در نظر بگیرید. اگر شما یک متد اشتباه را اجراکنید. تداخل session و خطاهای پایگاه داده رخ می‌دهد ، در interface ما با وجود اینکه پیاده‌سازی DBmgr فقط یک متد saveDepartment(Department dept) را دارد. این برای یک برنامۀ ساده عقلانی نیست که برنامه نویسان مجبور شوند بین ماندگار کردن یک object  جدید و یک object از پیش موجود تفاوت قایل شوند به همین دلیل interface ما فقط یک متد دارد. در پیاده‌سازی ما هنوز نیازمند این تفلوت قایل شدن هستیم.</p>
<div style="direction:ltr;text-align:left;background-color:#cdcdcd;padding:10px;">public void saveDepartment(Department dept)<br />
{<br />
try<br />
{<br />
ISession session = factory.OpenSession();<br />
ITransaction tx = session.BeginTransaction();if(dept.Id == 0)<br />
{<br />
session.Save(dept);<br />
}<br />
else<br />
{<br />
session.Update(dept);<br />
}<br />
tx.Commit();<br />
session.Close();<br />
}<br />
catch (Exception ex)<br />
{<br />
tx.Rollback();<br />
session.Close();<br />
// handle exception<br />
}<br />
}</div>
<p>ابتدا پیش از آنکه interface را ماندگار کنیم باید این را تشخیص دهیم که آیا از پیش وجود دارد یا اینکه جدید است. بوسیلۀ یک فیلد ساده تشخیص هویت integer ی، ما فقط ارزیابی می‌کنیم که مقدار آن صفر است یا نه. که این معنی را می‌دهد که هیچ ردیفی از قبل در پایگاه داده وجود ندارد. (صفت ثبت نشده را در بالا به یاد بیاورید). شما می‌توانید تصور کنید که این منطق، کاربردی در تشخیص هویت‌های پیچیده ندارد، هنگامی‌که ما در مورد از پیش وجود داشتن interface تصمیم‌گیری می‌کنیم، متد جدیدی را در session برای این کار در نظر می‌گیریم.</p></div>
<br />نوشته شده در Programming Tagged: Create, DataBase, ISession, Load, Net Framework, NHibernate, Object, ORM, Save, Transaction <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nhibernate.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nhibernate.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nhibernate.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nhibernate.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nhibernate.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nhibernate.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nhibernate.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nhibernate.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nhibernate.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nhibernate.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nhibernate.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nhibernate.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nhibernate.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nhibernate.wordpress.com/92/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nhibernate.wordpress.com&amp;blog=6580096&amp;post=92&amp;subd=nhibernate&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nhibernate.wordpress.com/2009/07/07/how-to-create-load-and-save-objects-in-nhibernate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/126a9e3f7ba67d39a4b7e17302d0b419?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">nhibernate</media:title>
		</media:content>
	</item>
		<item>
		<title>پیاده سازی و پیکربندی NHibernate (با یک نمونه)</title>
		<link>http://nhibernate.wordpress.com/2009/03/16/nhibernate-configuration/</link>
		<comments>http://nhibernate.wordpress.com/2009/03/16/nhibernate-configuration/#comments</comments>
		<pubDate>Mon, 16 Mar 2009 14:49:20 +0000</pubDate>
		<dc:creator>nhibernate</dc:creator>
				<category><![CDATA[DataBase]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[معرفی]]></category>
		<category><![CDATA[Configuration]]></category>
		<category><![CDATA[Net Framework]]></category>
		<category><![CDATA[NHibernate]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[ORM]]></category>

		<guid isPermaLink="false">http://nhibernate.wordpress.com/?p=41</guid>
		<description><![CDATA[در مطالب قبلی با مفهوم و کارایی ORMapper آشنا شدیم و سپس به معرفی NHibernate پرداختیم، در این مطلب قصد داریم تا با استفاده از یک مثال، بطور عملی یک پروژه را توسط NHibernate به Database پیوند دهیم. پس از انجام مراحل زیر شما بصورت عملی یک سیستم را با استفاده از NHibernate پیاده‌سازی کرده‌اید. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nhibernate.wordpress.com&amp;blog=6580096&amp;post=41&amp;subd=nhibernate&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">در مطالب قبلی با مفهوم و کارایی ORMapper آشنا شدیم و سپس به معرفی NHibernate پرداختیم، در این مطلب قصد داریم تا با استفاده از یک مثال، بطور عملی یک پروژه را توسط NHibernate به Database پیوند دهیم. پس از انجام مراحل زیر شما بصورت عملی یک سیستم را با استفاده از NHibernate پیاده‌سازی کرده‌اید. لازم بذکر است که این مثال از سایت theserverside.net اقتباس شده است که با استفاده از این لینک می‌توانید اصل مطلب را ملاحظه کنید.</div>
<div style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl"><strong>تمرین شماره یک : پیاده‌سازی عملی NHibernate</strong></div>
<div style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl"><strong><br />
</strong></div>
<div style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">
<h2>اهداف:</h2>
<p>1. ایجاد فایل mapper</p></div>
<div style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">2. مشخص کردن primary key و identifier ها در فایل‌های مپر<br />
3. ایجاد رابطه یک به چند در فایل‌های مپر ان.هایبرنیت<br />
4. ایجاد رابطه چند به چند در فایل‌های مپر ان.هایبرنیت<br />
5. ایجاد زیرکلاس در فایل‌های مپر</div>
<div style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">این مثال شامل یک سیستم داشجویی است که دربرگیرنده بخش‌های زیر است:</div>
<div style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="ltr">Department<br />
University<br />
Professor<br />
Student</div>
<div style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">
<p>که ارتباطاتشان به صورت زیر تعریف شده است :</p>
<div id="attachment_81" class="wp-caption aligncenter" style="width: 427px"><img class="size-full wp-image-81" title="p1_relations" src="http://nhibernate.files.wordpress.com/2009/03/p1_relations.gif?w=600" alt="تمرین یک : روابط بین کلاس‌ها"   /><p class="wp-caption-text">تمرین یک : روابط بین کلاس‌ها</p></div>
<p><strong>توضیحات :</strong><br />
یک دانشگاه دارای یک یا چند استاد است و یک استاد در یک یا چند دانشگاه مشغول به کار است، یک دانشگاه یک یا چند کلاس دارد و کلاس‌ها متعلق به یک دانشگاه هستند ، کلاس را یک استاد اداره می‌کند و هر استاد می‌تواند چند کلاس را اداره کند ، دانشجویان می‌توانند یک یا چند کلاس داشته باشند و هر کلاس می‌تواند یک یا چند دانشجو داشته باشد .<br />
تعریف کلاس‌ها به صورت زیر می‌باشد :</p>
<div style="text-align:left;background-color:#ebebeb;font-family:verdana,Tahoma;font-size:12pt;padding:10px;" dir="ltr">public class Department<br />
{<br />
private int id;<br />
private string name;<br />
private IDictionary classes;<br />
private IDictionary professors;<br />
}</div>
<div style="text-align:left;background-color:#ebebeb;font-family:verdana,Tahoma;font-size:12pt;padding:10px;" dir="ltr">public class Professor : Person<br />
{<br />
private int id;<br />
private string firstname;<br />
private string lastname;<br />
private string id;<br />
private IDictionary departments;<br />
private IDictionary classes;<br />
}</div>
<div style="text-align:left;background-color:#ebebeb;font-family:verdana,Tahoma;font-size:12pt;padding:10px;" dir="ltr">
<p>public class UniversityClass<br />
{<br />
private int id;<br />
private string name;<br />
private string number;<br />
private string syllabus;<br />
private DateTime startDate;<br />
private Professor professor;<br />
private IDictionary students;<br />
private Department department;<br />
}</p>
<p>public class Student : Person<br />
{<br />
private int id;<br />
private string firstname;<br />
private string lastname;<br />
private string ssn;<br />
private IDictionary classes;<br />
}</p>
<p>public interface Person<br />
{<br />
public int Id;<br />
public string FirstName;<br />
public string LastName;<br />
}</p></div>
<div style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">و نهایتا ساختار Database بدین شکل خواهد بود:</div>
<div style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">
<div id="attachment_82" class="wp-caption aligncenter" style="width: 520px"><img class="size-full wp-image-82" title="p2_database_table" src="http://nhibernate.files.wordpress.com/2009/03/p2_database_table.gif?w=600" alt="تمرین یک : روابط بین جداول پایگاه داده"   /><p class="wp-caption-text">تمرین یک : روابط بین جداول پایگاه داده</p></div>
</div>
<div style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">
<h2>فایل‌های map شده</h2>
<p>مرحلهٔ بعد فراهم کردن فایل‌های مپ شده است که با اطلاعات موجود در جداول در ارتباط هستند. هر کلاس، فایل‌های مپ شدهٔ خود را نیاز دارد. این فایل‌ها می‌توانند هرجا که شما بخواهید ذخیره شوند. اما بهتر است برای سادگی کار یک library به پروژه add کنید و این فایل‌ها را در آنجا ذخیره کنید. توجه داشته باشید که فایل‌های مپ شده برای ویژگی‌هایی که قرار است ماندگار (Persistence) باشند (ذخیره شوند) تهیه می‌شوند.</p></div>
<div style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl"><strong>گام نخست: ایجاد جداول در پایگاه داده</strong></div>
<div style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">برای شروع کار ابتدا در DataBase، جداول مربوطه را تشکیل می‌دهیم. (درست مانند شکل بالا، به این معنی که باتوجه به تصویر جداول پایگاه داده، این جداول را در Database ایجاد کنید).</div>
<div style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl"><strong>گام دوم: ایجاد فایل‌های Map</strong></div>
<div style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">س‍پس اقدام به ایجاد فایل‌های مپ شده می‌کنیم. (توجه داشده باشید که این کلاس‌ها باید با پسوند .xml ذخیره شوند). برای مثال باتوجه به موارد بالا، اگر بخواهیم برای کلاس Department فایل مپ ایجاد کنیم، باید بصورت زیر عمل کنیم. بدین منظور ابتدا تگ شناسایی xml را در ابتدای فایل بصورت زیر قرار می‌دهیم.</div>
<div style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;?</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">xml</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">version</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">1.0</span>&#8220;<span style="color:blue;"> </span><span style="color:red;">encoding</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">utf-8</span>&#8220;<span style="color:blue;"> ?&gt;</span></span></p>
</div>
<div style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">بعد باید مشخص کنیم که این فایل یک فایل مپ شده برای NHibernate است. بدین منظور به شکل زیر NameSpace مورد استفاده را به فایل اضافه می‌کنیم.</div>
<div style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">&lt;!&#8211;[if gte mso 9]&gt; Normal 0 false false false EN-US X-NONE AR-SA &lt;![endif]&#8211;&gt;&lt;!&#8211;[if gte mso 9]&gt; &lt;![endif]&#8211;&gt;</div>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">hibernate-mapping</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">xmlns</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">urn:nhibernate-mapping-2.0</span>&#8220;<span style="color:blue;">&gt;</span></span></p>
</div>
<div style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">
<p>حالا برای mapping مراحل زیر را طی می‌کنیم:<br />
در ابتدا مشخص می‌کنیم که کدام کلاس را مپ می‌کنیم. این کار را با نوشتن کلمهٔ class و نسبت دادن یک نام به آن انجام می‌دهیم.</p>
<p>&lt;!&#8211;[if gte mso 9]&gt; Normal 0 false false false EN-US X-NONE AR-SA &lt;![endif]&#8211;&gt;&lt;!&#8211;[if gte mso 9]&gt; &lt;![endif]&#8211;&gt;<!--[if gte mso 10]&gt;--> &lt;!&#8211;[endif]&#8211;&gt;</p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">class</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">name</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">nhRegistration.Department, nhRegistration</span>&#8221; <span style="color:red;">table</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">Department</span>&#8220;<span style="color:blue;"> /&gt;</span></span></p>
<p>حالا مشخصه‌ها را به یک فیلد DataBase مپ می‌کنیم. برای این کار باید نام مشخصه، ستون و نوع آن بیان شود. توجه داشته باشید که مقدار name در برنامه قابل دسترسی است و مقدار column باید و باید مشابه نام ستونی باشد که در جدول پایگاه داده ایجاد کرده‌اید. با این کار می‌توان نام‌های متفاوتی را برای ستون‌های جداول در پایگاه داده و آنچه که در عمل با آن در حال کار هستید، ایجاد کرد. فیلد type هم بیانگر نوع فیلد شما در جدول پایگاه داده است.</p>
<p>&lt;!&#8211;[if gte mso 9]&gt; Normal 0 false false false EN-US X-NONE AR-SA &lt;![endif]&#8211;&gt;&lt;!&#8211;[if gte mso 9]&gt; &lt;![endif]&#8211;&gt;&lt;!&#8211;[endif]&#8211;&gt;</p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">property</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">name</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">Name</span>&#8220;<span style="color:blue;"> </span><span style="color:red;">column</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">DeptName</span>&#8220;<span style="color:blue;"> </span><span style="color:red;">type</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">String(50)</span>&#8220;<span style="color:blue;">/&gt;</span></span></p>
<p>مورد جالب در اینجا فیلد id از کلاس Department است. هر کلاس باید فیلدی داشته باشد که شامل داده‌ای باشد که یکتاست. در مثال ما هر کلاس یک شناسه id دارد که یکتاست. در اینجا شما باید یک مجموعهٔ استاندارد از صفات را فراهم کنید که مهم‌ترینشان Generator نام دارد و مشخص می‌کند که این داده چطور درست شده (توسط برنامه‌نویس یا بوسیله NHibernate یا توسط لایه‌های پایین‌تر).<br />
Applicationهای مختلف قوانین مختلفی دربارهٔ شناسه‌ها دارند و پایگاه‌های‌داده مختلف سرویس‌های unique ای را برای مدیریت مقادیر پیشنهاد می‌کنند. در اینجا به چند مورد اشاره می‌کنیم.</p>
<p><strong>مقادیر رایج برای generator ها:</strong></p>
<p>1. Identity</p>
<p>2. Sequence</p>
<p>3. Hilo : استفاده از الگوریتم hilo برای generate کردن مقادیر شناسه‌ها.</p>
<p>4. Native : انتخاب خود DataBase</p>
<p>شناسهٔ unsaved_value یک مقدار default برای مشخصهٔ id است. یعنی وقتی که یک object ساخته شده ولی هنوز ذخیره نشده.</p>
<p>در اینجا ما native را انتخاب می‌کنیم. تا آنچه را که در پایگاه داده تعیین کرده‌ایم به عنوان id قرار بگیرد.</p>
<div style="background-color:#ebecec;" dir="ltr">
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">id</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">name</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">Id</span>&#8220;<span style="color:blue;"> </span><span style="color:red;">column</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">DeptID</span>&#8220;<span style="color:blue;"> </span><span style="color:red;">type</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">Int32</span>&#8220;<span style="color:blue;">&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">generator</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">class</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">assigned</span>&#8220;<span style="color:blue;"> /&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;/</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">id</span><span style="font-size:10pt;font-family:&quot;color:blue;">&gt;</span></p>
</div>
<p>حالا کد ما به این شکل درآمده:</p>
<div style="background-color:#ebecec;" dir="ltr">&lt;!&#8211;[if gte mso 9]&gt; Normal 0 false false false EN-US X-NONE AR-SA &lt;![endif]&#8211;&gt;&lt;!&#8211;[if gte mso 9]&gt; &lt;![endif]&#8211;&gt;&lt;!&#8211;[endif]&#8211;&gt;</div>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;?</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">xml</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">version</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">1.0</span>&#8220;<span style="color:blue;"> </span><span style="color:red;">encoding</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">utf-8</span>&#8220;<span style="color:blue;"> ?&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">hibernate-mapping</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">xmlns</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">urn:nhibernate-mapping-2.0</span>&#8220;<span style="color:blue;">&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">class</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">name</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">nhRegistration.Department, nhRegistration</span>&#8221; <span style="color:red;">table</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">Department</span>&#8220;<span style="color:blue;">&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">id</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">name</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">Id</span>&#8220;<span style="color:blue;"> </span><span style="color:red;">column</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">DeptID</span>&#8220;<span style="color:blue;"> </span><span style="color:red;">type</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">Int32</span>&#8220;<span style="color:blue;">&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">generator</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">class</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">assigned</span>&#8220;<span style="color:blue;"> /&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;/</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">id</span><span style="font-size:10pt;font-family:&quot;color:blue;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">property</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">name</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">Name</span>&#8220;<span style="color:blue;"> </span><span style="color:red;">column</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">DeptName</span>&#8220;<span style="color:blue;"> </span><span style="color:red;">type</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">String(50)</span>&#8220;<span style="color:blue;">/&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;/</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">class</span><span style="font-size:10pt;font-family:&quot;color:blue;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;/</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">hibernate-mapping</span><span style="font-size:10pt;font-family:&quot;color:blue;">&gt;</span></p>
</div>
<p>سپس به جمع‌آوری property ها می‌پردازیم (هر کدام که بخصوص باشند). بیایید به اولین کلاس‌مان نگاهی بیاندازیم که مجموعه‌ای از کلاس‌ها در دانشگاه است. نیازها و مدل‌ها را به خاطر داریم: یک دانشگاه می‌تواند چندین کلاس داشته باشد اما کلاس متعلق به یک دانشگاه است. این یک ارتباط یک به چند است. برای مدل کردن آن نیاز به element های &lt;set&gt; داریم که نشان دهیم که مجموعه‌ای را مپ می‌کنیم.</p>
<div style="background-color:#ebecec;" dir="ltr">
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">set</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">name</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">Classes</span>&#8220;<span style="color:blue;"> </span><span style="color:red;">cascade</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">all</span>&#8220;<span style="color:blue;">&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">key</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">column</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">DeptID</span>&#8220;<span style="color:blue;">/&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">one-to-many</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">class</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">nhRegistration.UniversityClass,nhRegistration</span>&#8220;<span style="color:blue;">/&gt;</span></span></p>
<p dir="ltr"><span style="font-size:10pt;background-color:#ebecec;line-height:115%;font-family:&quot;color:blue;padding:10px;">&lt;/</span><span style="font-size:10pt;background-color:#ebecec;line-height:115%;font-family:&quot;color:#a31515;padding:10px;">set</span><span style="font-size:10pt;background-color:#ebecec;line-height:115%;font-family:&quot;color:blue;padding:10px;">&gt;</span></p>
</div>
<p>به عبارت ساده‌تر با کد بالا، مقادیر کلید DeptID که در جدول خودش PrimaryKey است، به ستون مشخص شده‌اش Map می‌شود. نشانهٔ name در &lt;set&gt; نام یک فیلد است که مجموعه را نگه می‌دارد. در اینجا column در &lt;key&gt;  نام یک ستون در مجموعه‌ای است که به مشخصهٔ id کلاس والد مپ می‌شود و &lt;one_to_many&gt; نوع کلاس گردآوری شده است. به این معنی که رابطه این ستون (فیلد) با ستون دیگر به چه صورتی است ( پایین‌تر به انواع دیگری هم اشاره می‌کنیم)<br />
بنابراین جدولuniversity یک فیلد به نام deptid دارد که به id در کلاس university ی ما مپ می‌شود.<br />
سرانجام ما باید فیلد professors را مپ کنیم. مدلمان را به خاطر بیاورید، دانشگاه می‌تواند چندین استاد داشته باشد و اساتید نیز می‌توانند در چندین دانشگاه مشغول به کار باشند. این یک ارتباط چند به چند است. که در زیر نمونه‌ای از آن را مشاهده می‌کنید، در پیاده سازی صرفا کلمه کلیدی one-to-many و many-to-many تفاوت می‌کند.</p>
<div style="background-color:#ebecec;" dir="ltr">&lt;!&#8211;[if gte mso 9]&gt; Normal 0 false false false EN-US X-NONE AR-SA &lt;![endif]&#8211;&gt;&lt;!&#8211;[if gte mso 9]&gt; &lt;![endif]&#8211;&gt;&lt;!&#8211;[endif]&#8211;&gt;</div>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">set</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">name</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">Professors</span>&#8220;<span style="color:blue;"> </span><span style="color:red;">table</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">departmentprofessor</span>&#8220;<span style="color:blue;">&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">key</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">column</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">DeptID</span>&#8220;<span style="color:blue;">/&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">many-to-many</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">class</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">nhRegistration.Person,nhRegistration</span>&#8221; <span style="color:red;">column</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">Personid</span>&#8220;<span style="color:blue;">/&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;/</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">set</span><span style="font-size:10pt;font-family:&quot;color:blue;">&gt;</span></p>
<p>حال مپینگ کامل زیر را بخوانید</p>
<div style="background-color:#ebecec;" dir="ltr">&lt;!&#8211;[if gte mso 9]&gt; Normal 0 false false false EN-US X-NONE AR-SA &lt;![endif]&#8211;&gt;&lt;!&#8211;[if gte mso 9]&gt; &lt;![endif]&#8211;&gt;&lt;!&#8211;[endif]&#8211;&gt;</div>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;?</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">xml</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">version</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">1.0</span>&#8220;<span style="color:blue;"> </span><span style="color:red;">encoding</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">utf-8</span>&#8220;<span style="color:blue;"> ?&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">hibernate-mapping</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">xmlns</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">urn:nhibernate-mapping-2.0</span>&#8220;<span style="color:blue;">&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">class</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">name</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">nhRegistration.Department, nhRegistration</span>&#8220;</span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;"></span><span style="font-size:10pt;font-family:&quot;color:red;">table</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">Department</span>&#8220;<span style="color:blue;">&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">id</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">name</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">Id</span>&#8220;<span style="color:blue;"> </span><span style="color:red;">column</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">DeptID</span>&#8220;<span style="color:blue;"> </span><span style="color:red;">type</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">Int32</span>&#8220;<span style="color:blue;">&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">generator</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">class</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">assigned</span>&#8220;<span style="color:blue;"> /&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;/</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">id</span><span style="font-size:10pt;font-family:&quot;color:blue;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">property</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">name</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">Name</span>&#8220;<span style="color:blue;"> </span><span style="color:red;">column</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">DeptName</span>&#8220;<span style="color:blue;"> </span><span style="color:red;">type</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">String(50)</span>&#8220;<span style="color:blue;">/&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">set</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">name</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">Classes</span>&#8220;<span style="color:blue;"> </span><span style="color:red;">cascade</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">all</span>&#8220;<span style="color:blue;">&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">key</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">column</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">DeptID</span>&#8220;<span style="color:blue;">/&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">one-to-many</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">class</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">nhRegistration.UniversityClass,</span></span><span style="font-size:10pt;font-family:&quot;color:blue;">nhRegistration</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">/&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;/</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">set</span><span style="font-size:10pt;font-family:&quot;color:blue;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">set</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">name</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">Professors</span>&#8220;<span style="color:blue;"> </span><span style="color:red;">table</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">departmentprofessor</span>&#8220;<span style="color:blue;">&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">key</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">column</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">DeptID</span>&#8220;<span style="color:blue;">/&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;text-align:justify;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">many-to-many</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">class</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">nhRegistration.Person,</span></span><span style="font-size:10pt;font-family:&quot;color:blue;">nhRegistration</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;"> </span><span style="color:red;">column</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">Personid</span>&#8220;<span style="color:blue;">/&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;/</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">set</span><span style="font-size:10pt;font-family:&quot;color:blue;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;/</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">class</span><span style="font-size:10pt;font-family:&quot;color:blue;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;/</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">hibernate-mapping</span><span style="font-size:10pt;font-family:&quot;color:blue;">&gt;</span></p>
<p>اگر ما با استفاده از این مپینگ‌ها سعی کنیم که پروژه را load کنیم، موفق نمی‌شویم. NHibernate یک exception را گزارش می‌دهد زیرا ارتباطات یک به چند و چند به چند داریم. وقتی ارتباطاتی شبیه این داریم که NH هر دو طرف آن است باید نوع آنها را هم مپ کنیم.</p>
<div style="background-color:#ebecec;" dir="ltr">
<p dir="ltr">&lt;!&#8211;[if gte mso 9]&gt; Normal 0 false false false EN-US X-NONE AR-SA &lt;![endif]&#8211;&gt;&lt;!&#8211;[if gte mso 9]&gt; &lt;![endif]&#8211;&gt;&lt;!&#8211;[endif]&#8211;&gt;</p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;?</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">xml</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">version</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">1.0</span>&#8220;<span style="color:blue;"> </span><span style="color:red;">encoding</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">utf-8</span>&#8220;<span style="color:blue;"> ?&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">hibernate-mapping</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">xmlns</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">urn:nhibernate-mapping-2.0</span>&#8220;<span style="color:blue;">&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">class</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">name</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">nhRegistration.UniversityClass, nhRegistration</span>&#8220;</span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;"></span><span style="font-size:10pt;font-family:&quot;color:red;">table</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">UniversityClass</span>&#8220;<span style="color:blue;">&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">id</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">name</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">Id</span>&#8220;<span style="color:blue;"> </span><span style="color:red;">column</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">DeptId</span>&#8220;<span style="color:blue;"> </span><span style="color:red;">type</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">Int32</span>&#8220;<span style="color:blue;">&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">generator</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">class</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">assigned</span>&#8220;<span style="color:blue;"> /&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;/</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">id</span><span style="font-size:10pt;font-family:&quot;color:blue;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">property</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">name</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">Name</span>&#8220;<span style="color:blue;"> </span><span style="color:red;">column</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">ClassName</span>&#8221; <span style="color:red;">type</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">String(50)</span>&#8220;<span style="color:blue;">/&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">many-to-one</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">name</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">Dept</span>&#8220;<span dir="rtl"> </span><span style="color:red;">class</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">nhRegistration.Department,nhRegistration</span>&#8220;</span><span style="font-size:10pt;font-family:&quot;" dir="rtl"> </span><span style="font-size:10pt;font-family:&quot;color:red;">column</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">DeptID</span>&#8220;<span style="color:blue;">/&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;/</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">class</span><span style="font-size:10pt;font-family:&quot;color:blue;">&gt;</span></p>
<p dir="ltr"><span style="font-size:10pt;background-color:#ebecec;line-height:115%;font-family:&quot;color:blue;padding:10px;">&lt;/</span><span style="font-size:10pt;background-color:#ebecec;line-height:115%;font-family:&quot;color:#a31515;padding:10px;">hibernate-mapping</span><span style="font-size:10pt;background-color:#ebecec;line-height:115%;font-family:&quot;color:blue;padding:10px;">&gt;</span></p>
</div>
<p>تنها element جدید در این فایل &lt;many_to_one&gt; است که نمایندهٔ طرف دیگر &lt;one_to_many&gt;  در Department.hbm.xml است.</p>
<p>نوبت به professor می‌رسد که از همه جالب‌تر است، زیرا هم از interface ای بنام person به ارث رفته و هم یک جدول مشترک با دانشجو دارد. برای تشخیص professor و student باید به NH بگوییم که نوع موجودیت چیست و در  &lt;discriminator&gt; آن را مشخص می‌کنیم.</p>
<p>اگر نگاهی به مدل بیاندازید person ،3 فیلد را مشخص می‌کند: id ، person و lastname. student و professor هر دو این نمایندهٔ این فیلدها هستند اما آنه اتفاوت دارند. Student ، ssn دارد در حالی که professor ، identifier دارد. Professor مجموعه‌ای از دانشگاه‌ها و کلاسها را دارد در حالی که student فقط مجموعه‌ای از کلاس‌ها (ی درس) را دارد. شما می‌توانید فیلدها را در کلاس person مپ کنید اما فیلدهایی را که خاص هستند به عنوان subtype در &lt;subclass&gt; مپ کنید.</p>
<p>در حقیقت برای ثبت فضا‌، مجموعه مختلفی از فایل‌های مپ شده را برای پر‌رنگ کردن feature‌های polymorphism related ادغام می‌کنیم. این مجموعه به نظر می‌رسد شبیه مثال‌های بالا باشد.</p>
<div style="background-color:#ebecec;" dir="ltr">
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;?</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">xml</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">version</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">1.0</span>&#8220;<span style="color:blue;"> </span><span style="color:red;">encoding</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">utf-8</span>&#8220;<span style="color:blue;"> ?&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">hibernate-mapping</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">xmlns</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">urn:nhibernate-mapping-2.0</span>&#8220;<span style="color:blue;">&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">class</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">name</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">nhRegistration.Person, nhRegistration</span>&#8220;<span style="color:blue;"> </span><span style="color:red;">table</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">People</span>&#8220;<span style="color:blue;">&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">id</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">name</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">Id</span>&#8220;<span style="color:blue;"> </span><span style="color:red;">column</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">PersonID</span>&#8220;<span style="color:blue;"> </span><span style="color:red;">type</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">Int32</span>&#8220;<span style="color:blue;">&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">generator</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">class</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">assigned</span>&#8220;<span style="color:blue;"> /&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;/</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">id</span><span style="font-size:10pt;font-family:&quot;color:blue;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">discriminator</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">column</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">PersonType</span>&#8220;<span style="color:blue;"> </span><span style="color:red;">type</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">String</span>&#8220;<span style="color:blue;">/&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">property</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">name</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">FirstName</span>&#8220;<span style="color:blue;"> </span><span style="color:red;">column</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">FirstName</span>&#8221; <span style="color:red;">type</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">String(50)</span>&#8220;<span style="color:blue;">/&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">property</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">name</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">LastName</span>&#8220;<span style="color:blue;"> </span><span style="color:red;">column</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">LastName</span>&#8221; <span style="color:red;">type</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">String(50)</span>&#8220;<span style="color:blue;">/&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">subclass</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">name</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">nhRegistration.Professor, nhRegistration</span>&#8221; </span><span style="font-size:10pt;font-family:&quot;color:red;">discriminator-value</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">Professor</span>&#8220;<span style="color:blue;">&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">property</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">name</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">Identifier</span>&#8220;<span style="color:blue;"> </span><span style="color:red;">column</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">Identifier</span>&#8221; <span style="color:red;">type</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">String</span>&#8220;<span style="color:blue;">/&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;/</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">subclass</span><span style="font-size:10pt;font-family:&quot;color:blue;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">subclass</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">name</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">nhRegistration.Student, nhRegistration</span>&#8221; <span style="color:red;">discriminator-value</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">Student</span>&#8220;<span style="color:blue;">&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">property</span><span style="font-size:10pt;font-family:&quot;color:blue;"> </span><span style="font-size:10pt;font-family:&quot;color:red;">name</span><span style="font-size:10pt;font-family:&quot;color:blue;">=</span><span style="font-size:10pt;font-family:&quot;">&#8220;<span style="color:blue;">SSN</span>&#8220;<span style="color:blue;"> </span><span style="color:red;">column</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">Identifier</span>&#8221; <span style="color:red;">type</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">String</span>&#8220;<span style="color:blue;">/&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;background-color:#ebecec;line-height:normal;padding:10px;" dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;/</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">subclass</span><span style="font-size:10pt;font-family:&quot;color:blue;">&gt;</span></p>
<p dir="ltr"><span style="font-size:10pt;font-family:&quot;color:blue;">&lt;/</span><span style="font-size:10pt;font-family:&quot;color:#a31515;">class</span><span style="font-size:10pt;font-family:&quot;color:blue;">&gt;</span></p>
<p dir="ltr"><span style="font-size:10pt;background-color:#ebecec;line-height:115%;font-family:&quot;color:blue;padding:10px;">&lt;/</span><span style="font-size:10pt;background-color:#ebecec;line-height:115%;font-family:&quot;color:#a31515;padding:10px;">hibernate-mapping</span><span style="font-size:10pt;background-color:#ebecec;line-height:115%;font-family:&quot;color:blue;padding:10px;">&gt;</span></p>
</div>
<p>با انجام کارهای بالا شما یک پروژه را با موفقیت به پایگاه داده مپ کرده‌اید. در مطالب بعدی نحوه استفاده از این کلاس‌ها را مرور خواهیم کرد.<br />
منابعی که در نگارش این مطلب بکار رفته است.</p>
<br />نوشته شده در DataBase, Programming, معرفی Tagged: Configuration, DataBase, Net Framework, NHibernate, OOP, ORM <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nhibernate.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nhibernate.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nhibernate.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nhibernate.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nhibernate.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nhibernate.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nhibernate.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nhibernate.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nhibernate.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nhibernate.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nhibernate.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nhibernate.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nhibernate.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nhibernate.wordpress.com/41/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nhibernate.wordpress.com&amp;blog=6580096&amp;post=41&amp;subd=nhibernate&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nhibernate.wordpress.com/2009/03/16/nhibernate-configuration/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/126a9e3f7ba67d39a4b7e17302d0b419?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">nhibernate</media:title>
		</media:content>

		<media:content url="http://nhibernate.files.wordpress.com/2009/03/p1_relations.gif" medium="image">
			<media:title type="html">p1_relations</media:title>
		</media:content>

		<media:content url="http://nhibernate.files.wordpress.com/2009/03/p2_database_table.gif" medium="image">
			<media:title type="html">p2_database_table</media:title>
		</media:content>
	</item>
		<item>
		<title>نصب و راه اندازی NHibernate</title>
		<link>http://nhibernate.wordpress.com/2009/03/11/installing-configuring-nhibernate/</link>
		<comments>http://nhibernate.wordpress.com/2009/03/11/installing-configuring-nhibernate/#comments</comments>
		<pubDate>Wed, 11 Mar 2009 11:29:34 +0000</pubDate>
		<dc:creator>nhibernate</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[معرفی]]></category>
		<category><![CDATA[Configuration]]></category>
		<category><![CDATA[NHibernate]]></category>
		<category><![CDATA[ORM]]></category>

		<guid isPermaLink="false">http://nhibernate.wordpress.com/?p=25</guid>
		<description><![CDATA[برای استفاده از NHibernate مراحل مخنلفی را باید سپری کرد که در زیر به آنها اشاره می‌شود. توجه داشته باشید که برای استفاده از ان.هایبرنیت باید کارهای دیگری انجام داد که در آینده به آنها خواهیم پرداخت، در این مطلب قصد داریم نحوه نصب و پیکربندی NHibernate را در یک سیستم تشریح کنیم . گام [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nhibernate.wordpress.com&amp;blog=6580096&amp;post=25&amp;subd=nhibernate&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div style="text-align:justify;font-family:Terafik,tahoma;font-size:12pt;" dir="rtl">
<p>برای استفاده از NHibernate مراحل مخنلفی را باید سپری کرد که در زیر به آنها اشاره می‌شود. توجه داشته باشید که برای استفاده از ان.هایبرنیت باید کارهای دیگری انجام داد که در آینده به آنها خواهیم پرداخت، در این مطلب قصد داریم نحوه نصب و پیکربندی NHibernate را در یک سیستم تشریح کنیم .</p>
<p><strong>گام اول . دانلود و نصب ان.هایبرنیت .</strong></p>
<p>در ابتدا NHibernate را از <a href="http://nhibernate.sourceforge.net" target="_blank">اینجا در سورس فورگ</a> دانلود کزده و نصب کنید.</p>
<p><strong>گام دوم . اضافه کردن DLL های ان.هایبرنیت به پروژه.</strong></p>
<p>پروژه‌ای ایجاد کنید و فایل اسمبلی داخل پوشه BIN را که از آدرس بالا دانلود کردید به پروژه اضافه کنید.</p>
<p><strong>گام سوم . تنظیمات مورد نیاز در Web.Config .</strong></p>
<p>در ادامه تنظیمات زیر در فایل web.config برنامه اضافه می‌کنیم.</p>
<div style="background-color:#ebebeb;font-family:'Courier New',tahoma;padding:10px;">
<p class="MsoNormal" style="margin-bottom:.0001pt;line-height:normal;" dir="ltr"><span style="font-size:12pt;font-family:&quot;color:blue;">&lt;</span><span style="font-size:12pt;font-family:&quot;color:#a31515;">configuration</span><span style="font-size:12pt;font-family:&quot;color:blue;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;line-height:normal;" dir="ltr"><span style="font-size:12pt;font-family:&quot;color:blue;"><span> </span>&lt;</span><span style="font-size:12pt;font-family:&quot;color:#a31515;">configSections</span><span style="font-size:12pt;font-family:&quot;color:blue;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;line-height:normal;" dir="ltr"><span style="font-size:12pt;font-family:&quot;color:blue;"><span> </span>&lt;</span><span style="font-size:12pt;font-family:&quot;color:#a31515;">section</span><span style="font-size:12pt;font-family:&quot;color:blue;"> </span><span style="font-size:12pt;font-family:&quot;color:red;">name</span><span style="font-size:12pt;font-family:&quot;color:blue;">=</span><span style="font-size:12pt;font-family:&quot;">&#8220;<span style="color:blue;">nhibernate</span>&#8220;<span style="color:blue;"> </span><span style="color:red;">type</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">System.Configuration.NameValueSectionHandler, System,Version=2.0.1,Culture=neutral,PublicKeyToken=b77a5c561934e089</span>&#8220;<span style="color:blue;"> /&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;line-height:normal;" dir="ltr"><span style="font-size:12pt;font-family:&quot;color:blue;"><span> </span>&lt;/</span><span style="font-size:12pt;font-family:&quot;color:#a31515;">configSections</span><span style="font-size:12pt;font-family:&quot;color:blue;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;line-height:normal;"><span style="font-size:12pt;font-family:&quot;color:blue;"><span> </span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;line-height:normal;" dir="ltr"><span style="font-size:12pt;font-family:&quot;color:blue;"><span> </span>&lt;</span><span style="font-size:12pt;font-family:&quot;color:#a31515;">nhibernate</span><span style="font-size:12pt;font-family:&quot;color:blue;">&gt;</span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;line-height:normal;" dir="ltr"><span style="font-size:12pt;font-family:&quot;color:blue;"><span> </span>&lt;</span><span style="font-size:12pt;font-family:&quot;color:#a31515;">add</span><span style="font-size:12pt;font-family:&quot;color:blue;"> </span><span style="font-size:12pt;font-family:&quot;color:red;">key</span><span style="font-size:12pt;font-family:&quot;color:blue;">=</span><span style="font-size:12pt;font-family:&quot;">&#8220;<span style="color:blue;">hibernate.connection.provider</span>&#8220;<span style="color:blue;"> </span><span style="color:red;">value</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">NHibernate.Connection.DriverConnectionProvider</span>&#8220;<span style="color:blue;">/&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;line-height:normal;" dir="ltr"><span style="font-size:12pt;font-family:&quot;color:blue;"><span> </span>&lt;</span><span style="font-size:12pt;font-family:&quot;color:#a31515;">add</span><span style="font-size:12pt;font-family:&quot;color:blue;"> </span><span style="font-size:12pt;font-family:&quot;color:red;">key</span><span style="font-size:12pt;font-family:&quot;color:blue;">=</span><span style="font-size:12pt;font-family:&quot;">&#8220;<span style="color:blue;">hibernate.dialect</span>&#8220;<span style="color:blue;"> </span><span style="color:red;">value</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">NHibernate.Dialect.MsSql2000Dialect</span>&#8220;<span style="color:blue;">/&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;line-height:normal;" dir="ltr"><span style="font-size:12pt;font-family:&quot;color:blue;"><span> </span>&lt;</span><span style="font-size:12pt;font-family:&quot;color:#a31515;">add</span><span style="font-size:12pt;font-family:&quot;color:blue;"> </span><span style="font-size:12pt;font-family:&quot;color:red;">key</span><span style="font-size:12pt;font-family:&quot;color:blue;">=</span><span style="font-size:12pt;font-family:&quot;">&#8220;<span style="color:blue;">hibernate.connection.driver_class</span>&#8220;<span style="color:blue;"> </span><span style="color:red;">value</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">NHibernate.Driver.SqlClientDriver</span>&#8220;<span style="color:blue;">/&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;line-height:normal;" dir="ltr"><span style="font-size:12pt;font-family:&quot;color:blue;"><span> </span>&lt;</span><span style="font-size:12pt;font-family:&quot;color:#a31515;">add</span><span style="font-size:12pt;font-family:&quot;color:blue;"> </span><span style="font-size:12pt;font-family:&quot;color:red;">key</span><span style="font-size:12pt;font-family:&quot;color:blue;">=</span><span style="font-size:12pt;font-family:&quot;">&#8220;<span style="color:blue;">hibernate.connection.connection_string</span>&#8220;<span style="color:blue;"> </span><span style="color:red;">value</span><span style="color:blue;">=</span>&#8220;<span style="color:blue;">Server=.;initial catalog=nhibernate;UserID=sa;Password=123;Min Pool Size=2</span>&#8220;<span style="color:blue;">/&gt;</span></span></p>
<p class="MsoNormal" style="margin-bottom:.0001pt;line-height:normal;" dir="ltr"><span style="font-size:12pt;font-family:&quot;color:blue;"><span> </span>&lt;/</span><span style="font-size:12pt;font-family:&quot;color:#a31515;">nhibernate</span><span style="font-size:12pt;font-family:&quot;color:blue;">&gt;</span></p>
<p dir="ltr"><span style="font-size:12pt;font-family:&quot;color:blue;">&lt;/</span><span style="font-size:12pt;font-family:&quot;color:#a31515;">configuration</span><span style="font-size:12pt;font-family:&quot;color:blue;">&gt;</span></p>
</div>
<p><strong>چند نکته که باید در ادامه به آنها توجه داشت.</strong></p>
<p>وقتی برای تشخیص Data Store ، FrameWork تان را پیکربندی کردید، باید فضای مدل (ModelSpace) و همچنین پایگاه داده‌تان را معرفی  و مشخص کنید.</p>
<p>نکته دیگری هم وجود دارد و آن map کردن فایل‌ها و توضیح روابط (Relations) بین کلاس‌ها و جداول است.</p>
<p>‫امروزه NHibernate ابزاری را فراهم کرده که می‌تواند DLL هایی را از فایل‌های map شده تولید کند. و اضافه کردن یک شیء جدید به برنامه، درواقع یک NAnt task است که بطور خودکار توسط ‏‏ #C از فایل‌های مپ شده تولید می‌شود.</p>
<p>با انجام تنظیمات بالا باید براحتی از NHibernate در برنامه‌تان استفاده کنید. در مطلب بعدی یک مثال کاملا عملی برای کار با NHibernate می‌آورم.</p>
<p>منابعی که برای نگارش این مطلب از آنها استفاده شده است</p>
<p><a href="http://www.theserverside.net/tt/articles/showarticle.tss?id=NHibernate" target="_blank"> The Server Side .net</a></p>
<p><a href="http://nhibernate.sourceforge.net" target="_blank"> NHibernate on SourceForge</a></div>
<br />نوشته شده در Programming, معرفی Tagged: Configuration, NHibernate, ORM <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nhibernate.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nhibernate.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nhibernate.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nhibernate.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nhibernate.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nhibernate.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nhibernate.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nhibernate.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nhibernate.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nhibernate.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nhibernate.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nhibernate.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nhibernate.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nhibernate.wordpress.com/25/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nhibernate.wordpress.com&amp;blog=6580096&amp;post=25&amp;subd=nhibernate&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nhibernate.wordpress.com/2009/03/11/installing-configuring-nhibernate/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/126a9e3f7ba67d39a4b7e17302d0b419?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">nhibernate</media:title>
		</media:content>
	</item>
		<item>
		<title>ویژگی‌های NHibernate</title>
		<link>http://nhibernate.wordpress.com/2009/02/23/hibernate-specifications/</link>
		<comments>http://nhibernate.wordpress.com/2009/02/23/hibernate-specifications/#comments</comments>
		<pubDate>Mon, 23 Feb 2009 08:00:23 +0000</pubDate>
		<dc:creator>nhibernate</dc:creator>
				<category><![CDATA[معرفی]]></category>
		<category><![CDATA[NHibernate]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[ORM]]></category>

		<guid isPermaLink="false">http://nhibernate.wordpress.com/?p=21</guid>
		<description><![CDATA[از آنجا که برای شروع به کار با یک برنامه، کسب اطلاع از نقاط ضعف و قوت آن از ملزومات است و از آنجا که برنامه NHibernate در یکی از حساس ترین و مهمترین لایه های برنامه نهایی اجرا می شود، دانستن مطالب زیر را الزامی می‌دانم، همچنین لازم بذکر است که مطالب زیر شامل [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nhibernate.wordpress.com&amp;blog=6580096&amp;post=21&amp;subd=nhibernate&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">از آنجا که برای شروع به کار با یک برنامه، کسب اطلاع از نقاط ضعف و قوت آن از ملزومات است و از آنجا که برنامه NHibernate در یکی از حساس ترین و مهمترین لایه های برنامه نهایی اجرا می شود، دانستن مطالب زیر را الزامی می‌دانم، همچنین لازم بذکر است که مطالب زیر شامل مباحث فنی مختلفی است که از حوصله این مطلب خارج است به همین دلیل توضیحات مربوط به اصطلاحات ذکر شده را به عهده خواننده مطلب می‌گذارم.</p>
<p style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">1.     Natural programming model : بدین معنا که NHibernate ، OO را پشتیبانی می‌کند . یعنی ارث‌بری (Inheritance) ، چند‌ریختی (Polymorphism) ، ترکیب (Composition) ، Collection در .NET که شامل Generic collection ها هم می‌شود .</p>
<p style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">2.     Native .net ‏: API های NHibernate بر مبنای زبان‌های .NET و استانداردهای آن ایجاد شده است .</p>
<p style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">3.     Support for fine-grained object models : پشتیبانی از مدل‌های آبجکتی، از طریق مدل‌های مختلف غنی شده از مپینگ‌ها، برای Collection ها و Object  های وابسته .</p>
<p style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">4.     No build time byte code enhancement : در روند بیلد شدن، پردازش بر اساس بایت‌کدها و ایحاد کدهای اضافی وحود ندارد . در حقیقت در زمان بیلد شدن هیچ بهبودی در بایت‌کدها داده نمی‌شود .</p>
<p style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">5.     The query options : از بدست آوردن آبجکت‌های دیتابیس گرفته تا بدست آوردن خروجی‌های آنها . به هر دوی این مسائل می‌پردازد .</p>
<p style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">6.     Custom SQL : تصحیح کامل SQL که NHibernate باید برای آبحکت‌هایش از آنها استفاده کند .</p>
<p style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">7.     Support for “conversations” : ان.هایبرنیت از ماندگاری بالای مفاهیم ، سوا و سر‌هم‌بندی آبحکت‌ها پشتیبانی می‌کند و همچنین از optimistic locking به صورت خودکار مراقبت می‌کند .</p>
<p style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">8.     Free/open source : ان هاببرنیت، تحت مجوز LGPL (Lesser GNU Public License) است و سورس پروژه ان.هایبرنیت را از<a href="http://sourceforge.net/projects/nhibernate/" target="_blank"> سایت SourceForge از اینجا می توانید دانلود</a> کنید .</p>
<p style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">منابعی که در نگارش این مطلب از آنها استفاده شده است<br />
     <a href="http://www.nhibernate.org" target="_blank"><strong>سایت رسمی NHibernate</strong></a><br />
     <a href="http://en.wikiperia.org/wiki/nhibernate" target="_blank"><strong>توضیحات ویکی پدیا در مورد NHibernate</strong></a></p>
<br />نوشته شده در معرفی Tagged: NHibernate, OOP, ORM <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nhibernate.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nhibernate.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nhibernate.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nhibernate.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nhibernate.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nhibernate.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nhibernate.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nhibernate.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nhibernate.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nhibernate.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nhibernate.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nhibernate.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nhibernate.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nhibernate.wordpress.com/21/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nhibernate.wordpress.com&amp;blog=6580096&amp;post=21&amp;subd=nhibernate&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nhibernate.wordpress.com/2009/02/23/hibernate-specifications/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/126a9e3f7ba67d39a4b7e17302d0b419?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">nhibernate</media:title>
		</media:content>
	</item>
		<item>
		<title>NHibernate چیست</title>
		<link>http://nhibernate.wordpress.com/2009/02/17/what-is-nhibernate/</link>
		<comments>http://nhibernate.wordpress.com/2009/02/17/what-is-nhibernate/#comments</comments>
		<pubDate>Tue, 17 Feb 2009 11:42:16 +0000</pubDate>
		<dc:creator>nhibernate</dc:creator>
				<category><![CDATA[DataBase]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[CLR]]></category>
		<category><![CDATA[Net Framework]]></category>
		<category><![CDATA[Object]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[ORM]]></category>

		<guid isPermaLink="false">http://nhibernate.wordpress.com/?p=9</guid>
		<description><![CDATA[NHibernate  چیست؟ یک ORM است که تحت پلت فرم دات نت مایکروسافت کار می‌کند ، و یک FrameWork را برای  کار راحت‌تر و با پیچیدگی کمتر با database پیشنهاد می‌کند. در این مدل فیلدهای Database به آبجکت‌های معادلی، برای استفاده در محیط دات نت تبدیل (map) می‌شوند . و با این کار برنامه‌نویسان از پیچیدگی‌های [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nhibernate.wordpress.com&amp;blog=6580096&amp;post=9&amp;subd=nhibernate&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h1 style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;">NHibernate  چیست؟</h1>
<p style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">یک ORM است که تحت پلت فرم دات نت مایکروسافت کار می‌کند ، و یک FrameWork را برای  کار راحت‌تر و با پیچیدگی کمتر با database پیشنهاد می‌کند. در این مدل فیلدهای Database به آبجکت‌های معادلی، برای استفاده در محیط دات نت تبدیل (map) می‌شوند . و با این کار برنامه‌نویسان از پیچیدگی‌های ارتباطی DataBase ای خلاص می‌شوند.</p>
<p style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl"> NH (NHibernate) یک نرم‌افزار کدباز ( OpenSource ) رایگان است. و قسمتی از java ORMapper Hibernate است که کدی در قالب  XML  از موجودیت‌ها (Entity) و روابط (Relation) ارائه می‌کند. و به صورت اتوماتیک برای ذخیره و بازیابی Data ها کد Sql تولید می‌کند، و شما می‌توانید با متادیتاهای (meta data) ذخیره شده در source code کار کنید.</p>
<h2 style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;">نسخه های NHibernate</h2>
<p style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">   1.      NHibernate نسخه 1.2.1 در نوامبر سال 2007 ( مهر ماه ۱۳۸۶ ) به بازار آمد و با .NET 2.0  کار می‌کرد.</p>
<p style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">   2.      NHibernate نسخه 2.0 در آگوست سال 2008 ( مرداد ماه ۱۳۸۷ ) عرضه شد.</p>
<p style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">   3.      NHibernate نسخه 2.0.1 در سپتامبر سال 2008 ( شهریور ماه ۱۳۸۷ ) عرضه شد. و با دات نت 1.1 و  2.0 کار می‌کرد</p>
<p style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">   4.      NHibernate نسخه 2.1 در اواسط سال 2009 ، عرضه خواهد شد.</p>
<p style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">   5.      NHibernate نسخه 3.0 اولین نسخه ای خواهد بود که از .net 3.5 استفاده خواهد کرد .</p>
<p style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">توجه داشته باشید که در نسخه های بالا در مورد کارکرد برنامه با .net framework های مختلف ، متن بر اساس نوشته های سایت رسمی  nhibernate و ویکی پدیا آورده شده .  تجربه شخصی نشان می دهد که نسخه‌های پایین تر با framework 3.5 مشکلی ندارند و بخوبی با آن کار می کنند . ( احتمالا منظور از سازگار بودن با فریم ورک های مختلف، استفاده از حداکثر قابلیت های آن فریم ورک است )</p>
<p style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">توانایی اصلی «ان هایبرنیت» در map کردن table های DataBase به کلاس‌های .NET است.</p>
<p style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">ان.هایبرنیت همچنین DataQuery و امکان بازیابی (retrieval) را فراهم می‌کند ، کدهای SQL تولید می‌کند و طراح را  از هندل کردن دستی DataBase نسبت به تبدیلات آن و نگهداری Application های Sql ، راحت می‌کند.</p>
<p style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">NH ، ماندگاری مناسبی را برای طرح قدیمی CLR (Compiler Language Runtime) فراهم می‌کند. و آبجکت‌های کلاس شما مجبور نیستند مدل برنامه نویسی محدود کننده‌ای را دنبال کنند.</p>
<p style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">مزیت مهم استفاده از NHibernate این است که می‌توان برای بانک اطلاعاتی به صورت Object Oriented (OO ) کد نوشت. یعنی عملا DtaBase یک Object است که از آن در قالب Data ی map شده استفاده می‌کنیم.</p>
<p style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">در صورت استفاده کردن از DataSet به جای NH برنامه سرعت بیشتری دارد؛ اما برای نوشتن کد باید کد Sql بنویسیم، پس درگیر پیچیدگی‌های کار با Sql در محیط .NET خواهیم شد. درضمن اگر قرار به عوض کردن نوع DataBase باشد ، اگر framework ای هم از قبل برای راحتی کار درست کرده باشیم، به صورت کامل باید تغییر کند و دوباره نوشته شود. اما در صورت استفاده از NHibernate در صورت تمایل به تغییر DataBase فقط و فقط در تعریف نام DataBase باید تجدید نظر کرد و تمام تغییرات وابسته به database با تغییر پایگاه داده نهایی خودبخود تغییر می‌کنند و ان هایبرنیت آنها را برای ما ایجاد می‌کند.</p>
<p style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">منابعی که برای تهیه این مطلب از آنها استفاده شده است</p>
<p style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">     <a href="http://en.wikipedia.org/wiki/NHibernate"><strong>nHibernate درویکی پدیا</strong></a></p>
<p style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">     <a href="http://www.theserverside.net"><strong>theserverside.net</strong></a></p>
<p style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">     تجارب شخصی</p>
<br />نوشته شده در DataBase, Programming Tagged: CLR, DataBase, Net Framework, Object, OOP, ORM <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nhibernate.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nhibernate.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nhibernate.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nhibernate.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nhibernate.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nhibernate.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nhibernate.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nhibernate.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nhibernate.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nhibernate.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nhibernate.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nhibernate.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nhibernate.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nhibernate.wordpress.com/9/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nhibernate.wordpress.com&amp;blog=6580096&amp;post=9&amp;subd=nhibernate&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nhibernate.wordpress.com/2009/02/17/what-is-nhibernate/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/126a9e3f7ba67d39a4b7e17302d0b419?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">nhibernate</media:title>
		</media:content>
	</item>
		<item>
		<title>لیستی از نرم افزارهای ORMapper</title>
		<link>http://nhibernate.wordpress.com/2009/02/14/ormapper-application-list/</link>
		<comments>http://nhibernate.wordpress.com/2009/02/14/ormapper-application-list/#comments</comments>
		<pubDate>Sat, 14 Feb 2009 16:06:50 +0000</pubDate>
		<dc:creator>nhibernate</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[ORM]]></category>

		<guid isPermaLink="false">http://nhibernate.wordpress.com/?p=11</guid>
		<description><![CDATA[از آنجا که بیشتر مطالبی که در این وبلاگ خواهم نوشت، در ارتباط با ORM است. لذا لیستی از ORM های مختلف را که ویکی پدیا آورده در اینجا می‌آورم و در مطالب بعدی در مورد یکی از این ORM ها که قدرت خوبی دارد و OpenSource هست مطالبی خواهم نوشت . مطلب زیر از [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nhibernate.wordpress.com&amp;blog=6580096&amp;post=11&amp;subd=nhibernate&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>از آنجا که بیشتر مطالبی که در این وبلاگ خواهم نوشت، در ارتباط با ORM است. لذا لیستی از ORM های مختلف را که ویکی پدیا آورده در اینجا می‌آورم و در مطالب بعدی در مورد یکی از این ORM ها که قدرت خوبی دارد و OpenSource هست مطالبی خواهم نوشت .</p>
<p>مطلب زیر از <a href="http://en.wikipedia.org/wiki/List_of_object-relational_mapping_software" target="_blank"> <strong>اینجا</strong> در <strong>ویکی پدیا</strong> </a> قابل دسترسی می باشد .</p>
<div dir="ltr">
<h3><span class="mw-headline">C++</span></h3>
<ul>
<li><a title="LiteSQL" href="/wiki/LiteSQL">LiteSQL</a>, open source</li>
</ul>
<h3><span class="mw-headline">Java</span></h3>
<ul>
<li><a title="Carbonado (Java)" href="/wiki/Carbonado_(Java)">Carbonado</a>,  open source framework, backed by <a title="Berkeley DB" href="/wiki/Berkeley_DB">Berkeley DB</a> or <a title="Java Database Connectivity" href="/wiki/Java_Database_Connectivity">JDBC</a></li>
<li><a title="Apache Cayenne" href="/wiki/Apache_Cayenne">Cayenne</a>, Apache,  open source for java</li>
<li><a title="Ebean" href="/wiki/Ebean">Ebean</a>, open source ORM Framework</li>
<li><a title="EclipseLink" href="/wiki/EclipseLink">EclipseLink</a>, Eclipse  Persistence Platform</li>
<li><a title="Enterprise Objects Framework" href="/wiki/Enterprise_Objects_Framework">Enterprise Objects Framework</a>, Mac  OS X/Java, part of Apple <a title="WebObjects" href="/wiki/WebObjects">WebObjects</a></li>
<li><a title="Hibernate (Java)" href="/wiki/Hibernate_(Java)">Hibernate</a>,  open source ORM Framework, widely used</li>
<li><a title="IBATIS" href="/wiki/IBATIS">iBATIS</a>, maintained by <a title="Apache Software Foundation" href="/wiki/Apache_Software_Foundation">ASF</a>, and with .NET port.</li>
<li><a title="Java Data Objects" href="/wiki/Java_Data_Objects">Java Data  Objects</a> (JDO)</li>
<li><a title="JPOX" href="/wiki/JPOX">JPOX</a>, open source JDO 2 reference  implementation</li>
<li><a title="Kodo" href="/wiki/Kodo">Kodo</a>, commercial implementation of both  the JDO and JPA API.</li>
<li><a class="mw-redirect" title="OpenJPA" href="/wiki/OpenJPA">OpenJPA</a>, Apache,  open source, supports JPA API.</li>
<li><a title="TopLink" href="/wiki/TopLink">TopLink</a> by Oracle</li>
<li><a title="Apache Torque" href="/wiki/Apache_Torque">Torque</a>, Torque is an  object-relational mapper for java.</li>
<li><a title="WebObjects" href="/wiki/WebObjects">WebObjects</a> commercial (but  for free) from Apple, includes EOF as the object-relational mapping layer</li>
</ul>
<h3><span class="mw-headline">.NET</span></h3>
<ul>
<li><a title="ADO.NET Entity Framework" href="/wiki/ADO.NET_Entity_Framework">ADO.NET Entity Framework</a>, Microsoft&#8217;s  ORM (released with .NET 3.5 SP1)</li>
<li><a title="Base One Foundation Component Library" href="/wiki/Base_One_Foundation_Component_Library">Base One Foundation Component  Library</a>, free or commercial</li>
<li>BCSEi ORM Code Generator, commercial</li>
<li><a title="BLToolkit" href="/wiki/BLToolkit">Business Logic Toolkit for  .NET</a>, open source</li>
<li><a class="mw-redirect" title="Castle ActiveRecord" href="/wiki/Castle_ActiveRecord">Castle ActiveRecord</a>, ActiveRecord for .NET,  open source</li>
<li><a title="DataObjects.Net v4.0" href="/wiki/DataObjects.Net_v4.0">DataObjects.Net v4.0</a>, open source,  commercial</li>
<li><a title="DevForce" href="/wiki/DevForce">DevForce</a>, commercial, N-Tier</li>
<li><a class="mw-redirect" title="Devexpress" href="/wiki/Devexpress">Developer  Express</a>, eXpress Persistent Objects (XPO)</li>
<li><a title="EntitySpaces" href="/wiki/EntitySpaces">EntitySpaces</a>, commercial</li>
<li><a title="Euss" href="/wiki/Euss">Euss</a>, open source</li>
<li><a title="Habanero.NET" href="/wiki/Habanero.NET">Habanero</a>, Free open  source</li>
<li><a title="IBATIS" href="/wiki/IBATIS">iBATIS</a>, Free open source</li>
<li><a title="LLBLGen" href="/wiki/LLBLGen">LLBLGen</a>, open source drivers,  commercial</li>
<li>LightSpeed, free or commercial</li>
<li><a title="Neo (object-relational toolset)" href="/wiki/Neo_(object-relational_toolset)">Neo</a>, open source</li>
<li><a title="NConstruct" href="/wiki/NConstruct">NConstruct</a>, commercial</li>
<li><a title="NHibernate" href="/wiki/NHibernate">NHibernate</a>, open source</li>
<li><a title="ObjectMapper .NET" href="/wiki/ObjectMapper_.NET">ObjectMapper  .NET</a>, GPL and commercial license</li>
<li><a title="Telerik OpenAccess ORM" href="/wiki/Telerik_OpenAccess_ORM">OpenAccess</a>, free or commercial</li>
<li>TierDeveloper, free ORM and code generation tool</li>
<li><a title="Persistor.NET" href="/wiki/Persistor.NET">Persistor.NET</a>, free or  commercial</li>
<li><a class="mw-redirect" title="Quick Objects" href="/wiki/Quick_Objects">Quick  Objects</a>, free or commercial</li>
<li><a title="Sooda" href="/wiki/Sooda">Sooda</a>, open source; BSD license</li>
<li><a title="Subsonic (software)" href="/wiki/Subsonic_(software)">Subsonic</a>, open source</li>
</ul>
<h3><span class="mw-headline">PHP</span></h3>
<ul>
<li><a title="Doctrine (PHP)" href="/wiki/Doctrine_(PHP)">Doctrine</a>, Open  Source ORM for PHP 5.2.3, free software (GNU LGPL)</li>
<li><a title="Propel (PHP)" href="/wiki/Propel_(PHP)">Propel</a>, ORM and  Query-Toolkit for PHP 5, inspired by Apache Torque, free software (GNU LGPL)</li>
<li><a class="external text" title="http://www.ezpdo.net/" rel="nofollow" href="http://www.ezpdo.net/">EZPDO</a>, Open Source ORM for PHP  5.0.4 or newer, free software (BSD)</li>
<li><a class="external text" title="http://manifestwebdesign.com/developer-resources/database-abstraction-layer/" rel="nofollow" href="http://manifestwebdesign.com/developer-resources/database-abstraction-layer/">DABL</a>, Database class creator and Query builder, inspired by  Propel but easier to install, free software</li>
</ul>
<h3><span class="mw-headline">Python</span></h3>
<ul>
<li><a title="Django (web framework)" href="/wiki/Django_(web_framework)">Django</a>, open source</li>
<li><a title="SQLAlchemy" href="/wiki/SQLAlchemy">SQLAlchemy</a>, open source</li>
<li><a title="SQLObject" href="/wiki/SQLObject">SQLObject</a>, open source</li>
<li><a title="Storm (software)" href="/wiki/Storm_(software)">Storm  (software)</a>, free software (LGPL 2.1), object-relational mapper for Python  developed at <a title="Canonical Ltd." href="/wiki/Canonical_Ltd.">Canonical  Ltd.</a></li>
</ul>
<h3><span class="mw-headline">Ruby</span></h3>
<ul>
<li><a title="ActiveRecord (Rails)" href="/wiki/ActiveRecord_(Rails)">ActiveRecord</a>, part of <a title="Ruby on Rails" href="/wiki/Ruby_on_Rails">Ruby on Rails</a> (open source)</li>
<li><a title="Datamapper" href="/wiki/Datamapper">Datamapper</a></li>
<li><a title="IBATIS" href="/wiki/IBATIS">iBATIS</a>, Free open source</li>
</ul>
<h3><span class="mw-headline">Perl</span></h3>
<ul>
<li>DBIx::Class, open source (often used with <a title="Catalyst (software)" href="/wiki/Catalyst_(software)">Catalyst</a>)</li>
<li>Fey-ORM, open source</li>
<li><a class="external text" title="http://search.cpan.org/~tmtm/Class-DBI-v3.0.17/lib/Class/DBI.pm" rel="nofollow" href="http://search.cpan.org/~tmtm/Class-DBI-v3.0.17/lib/Class/DBI.pm">Class::DBI</a>, open source (quick and easy)</li>
</ul>
<p><!--  NewPP limit report Preprocessor node count: 8/1000000 Post-expand include size: 0/2048000 bytes Template argument size: 0/2048000 bytes Expensive parser function count: 0/500 --><!-- Saved in parser cache with key enwiki:pcache:idhash:5612136-0!1!0!default!!en!2 and timestamp 20090214054350 --></p>
<div class="printfooter" dir="ltr">Retrieved from &#8220;<a href="http://en.wikipedia.org/wiki/List_of_object-relational_mapping_software">http://en.wikipedia.org/wiki/List_of_object-relational_mapping_software</a>&#8220;</div>
</div>
<br />نوشته شده در Programming Tagged: ORM <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nhibernate.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nhibernate.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nhibernate.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nhibernate.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nhibernate.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nhibernate.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nhibernate.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nhibernate.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nhibernate.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nhibernate.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nhibernate.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nhibernate.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nhibernate.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nhibernate.wordpress.com/11/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nhibernate.wordpress.com&amp;blog=6580096&amp;post=11&amp;subd=nhibernate&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nhibernate.wordpress.com/2009/02/14/ormapper-application-list/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/126a9e3f7ba67d39a4b7e17302d0b419?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">nhibernate</media:title>
		</media:content>
	</item>
		<item>
		<title>ORM چیست</title>
		<link>http://nhibernate.wordpress.com/2009/02/14/what-is-orm-object-relational-mapping/</link>
		<comments>http://nhibernate.wordpress.com/2009/02/14/what-is-orm-object-relational-mapping/#comments</comments>
		<pubDate>Sat, 14 Feb 2009 08:20:39 +0000</pubDate>
		<dc:creator>nhibernate</dc:creator>
				<category><![CDATA[DataBase]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[ORM]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[ORM یا Object Relational Mapping یک تکنیک برنامه نویسی برای تبدیل ارتباطات در Database به مفاهیم Object Oriented در برنامه نویسی است. در واقع می‌توان گفت که ORM کلا‌س ها را به Table ها map می‌کند. ORM برای این کار ( map کردن ،) یک Framework تهیه می‌کند. و توصیه می کند که کاربردها هنگام [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nhibernate.wordpress.com&amp;blog=6580096&amp;post=1&amp;subd=nhibernate&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">ORM یا Object Relational Mapping  یک تکنیک برنامه نویسی برای تبدیل ارتباطات در Database به مفاهیم Object Oriented در برنامه نویسی است. در واقع می‌توان گفت که ORM کلا‌س ها را به Table ها map می‌کند.</div>
<div style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">ORM برای این کار ( map کردن ،) یک Framework تهیه می‌کند. و توصیه می کند که کاربردها هنگام پیاده سازی از یک Framework استفاده نمایند. وقتی که شما می‌خواهید به Database دسترسی پیدا کنید، یا اطلاعاتی را ذخیره کنید، این کارها را مستقیما بر‌ روی اشیاء ( Object تان ) انجام می‌دهید. در واقع ORM با کپسوله کردن مراحل دسترسی به Database ، دشواری‌های کار با پایگاه داده را از دید کاربران و برنامه‌نویسان پنهان می‌کند.</div>
<div style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">
<div id="attachment_5" class="wp-caption aligncenter" style="width: 520px"><img class="size-full wp-image-5" title="orm-overview" src="http://nhibernate.files.wordpress.com/2009/02/orm-overview.png?w=600" alt="معرفی ORM"   /><p class="wp-caption-text">معرفی ORM</p></div>
</div>
<div style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">مزیت بکارگیری ORM مدیریت ساده data  در Object Oriented Programming توسط ORM است. و اینکه اگر قرار به عوض شدن پایگاه داده باشد، این تبدیل تنها با عوض کردن یک بخش از Framework که وظیفه برقراری ارتباط با Database را بر عهده دارد ( در برخی از برنامه‌های موجود با تغییر خصوصیت نام پایگاه داده ) صورت می‌پذیرد.</div>
<div style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">از مشکلاتی که ORM می‌تواند بوجود آورد میتوان به این مورد اشاره کرد که به خاطر فضای زیادی که اشغال می‌کند ، باعث پایین آمدن Performance در سیستم می‌شود. ولی به خاطر مزایایی که دارد (که بخصوص در پروژه‌های بزرگ حس می‌شود) استفاده از آن توصیه می‌شود.</div>
<div style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">منابعی که در تهیه این مطلب از آنها استفاده شده است:</div>
<div style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">
<ul>
<li><a href="http://en.wikipedia.org/wiki/Object-relational_mapping" target="_blank">Wikipedia.org</a></li>
</ul>
</div>
<div style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">
<ul>
<li><a href="http://www.service-architecture.com/object-relational-mapping/articles/" target="_blank">Service-Architecture.com</a></li>
</ul>
</div>
<div style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">
<ul>
<li><a href="http://www.ambysoft.com/essays/mappingObjects.html" target="_blank">ambysoft.com</a></li>
</ul>
</div>
<div style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">
<ul>
<li><a href="http://www.agiledata.org/essays/mappingObjects.html" target="_blank">AgileData.org</a></li>
</ul>
</div>
<div style="text-align:justify;font-family:Terafik,Tahoma;font-size:12pt;" dir="rtl">
<ul>
<li><a href="http://www.developer.com/net/asp/article.php/10917_3709346_1" target="_blank">Developer.com</a></li>
</ul>
</div>
<br />نوشته شده در DataBase, Programming Tagged: DataBase, OOP, ORM <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/nhibernate.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/nhibernate.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/nhibernate.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/nhibernate.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/nhibernate.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/nhibernate.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/nhibernate.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/nhibernate.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/nhibernate.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/nhibernate.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/nhibernate.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/nhibernate.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/nhibernate.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/nhibernate.wordpress.com/1/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=nhibernate.wordpress.com&amp;blog=6580096&amp;post=1&amp;subd=nhibernate&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://nhibernate.wordpress.com/2009/02/14/what-is-orm-object-relational-mapping/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/126a9e3f7ba67d39a4b7e17302d0b419?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">nhibernate</media:title>
		</media:content>

		<media:content url="http://nhibernate.files.wordpress.com/2009/02/orm-overview.png" medium="image">
			<media:title type="html">orm-overview</media:title>
		</media:content>
	</item>
	</channel>
</rss>
