Мы создаем базу данных, используя класс 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>
Для этого свойства правильно таблица "CMS_PluginInstanceRouteParams", созданная при вызове:
var schemaExport = new SchemaExport(configuration);
schemaExport.Create(false, true);
Но мне было интересно, почему в этой таблице нет первичного ключа.Сгенерированная структура:
Столбец ParamId правильно является внешним ключом таблицы класса PluginInstance, а в столбце Param - значения хранимого свойства RouteParams.
Isнет необходимости в первичном ключе в этой таблице?Можно ли установить первичный ключ для этого свойства с помощью NHibernate.Mapping.Attributes?