nHibernateのschemaExportクラスを使用してデータベースを作成します。これで、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>
このプロパティは、次の呼び出し時に作成される「CMS_PluginInstanceRouteParams」テーブルが正しいためです。
var schemaExport = new SchemaExport(configuration);
schemaExport.Create(false, true);
しかし、なぜこのテーブルに主キーがないのか疑問に思いました。生成された構造は
列ParamIdは、クラスPluginInstanceのテーブルへの外部キーであり、列Paramには、格納されているプロパティRouteParamsの値が正しく含まれています。
このテーブルに主キーは必要ありませんか?NHibernate.Mapping.Attributesを使用してこのプロパティに主キーを設定することは可能ですか?