我們使用nHibernate的schemaExport類創建數據庫。我現在有一個具有我們生成nhibernate映射的屬性的類。這個類的一個組成部分是:爲什麼NHibernate創建一個沒有主鍵的表?
public class PluginInstance
{
...
[Bag(2, Name = "RouteParams", Access = "property", Table = "CMS_PluginInstanceRouteParams")]
[Key(3, Column = "ParamId")]
[Element(4, Column = "Param", Type = "string")]
public virtual IList<String> RouteParams
{
get { return _routeParamsField; }
set { _routeParamsField = value; }
}
...
}
NHibernate的映射的產生部分是以下
<bag name="RouteParams" access="property" table="CMS_PluginInstanceRouteParams">
<key column="ParamId" />
<element column="Param" type="string" />
</bag>
對於此屬性是correcty的「CMS_PluginInstanceRouteParams」創建表時,我們稱之爲:
var schemaExport = new SchemaExport(configuration);
schemaExport.Create(false, true);
但我不知道爲什麼這個表沒有一個主鍵。生成的結構爲
ParamId列正確地是類PluginInstance的表的外鍵,並且Param欄正確地存儲了屬性RouteParams的值。
有沒有必要在這個表中的主鍵?是否可以使用NHibernate.Mapping.Attributes來設置此屬性的主鍵?
如果定義的芳族聚酰胺列主鍵,你就失去了1:N的關係,不是嗎?爲什麼你想在該表中使用主鍵? – 2011-04-22 22:40:23
您的實體在哪裏定義? – 2011-04-22 23:28:19
我想知道爲什麼這個表沒有主鍵,因爲我們使用de vs2010 datacomparer將一些初始數據從臨時數據庫複製到活動數據庫。但由於主鍵,此表不會顯示在比較器中。這個問題不是有關:http://stackoverflow.com/questions/5700864/visual-studio-2010-datacompare-table-comparison – 2011-04-23 00:39:56