Я использую NHibernate и Fluent NHibernate для создания файла сопоставления для объекта домена (хотя мне все равно, использует ли ответ свободный синтаксис NHibernate или xml hbm). И у меня возникли проблемы с выяснением того, как я указываю, что набор столбцов, представляющих компонент в доменном объекте, является уникальным.
Вот объект домена:
public class SpaceLocation
{
public SpaceCoordinate Coordinates { get; set; }
public SpaceObject AtLocation { get; set; }
}
и вот компонент, с которым у меня проблемы:
public struct SpaceCoordinate
{
public int x { get; set; }
public int y { get; set; }
public int z { get; set; }
}
Не беспокойтесь о SpaceObject AtLocation
для целей этого вопроса.
Итак, я знаю, как сделать компонент из SpaceCoordinate, но я хочу сделать так, чтобы не было повторяющихся вставок одного и того же набора координат. Для этого я хочу сделать компонент в целом уникальным.
Чтобы дать вам представление о направлении, в котором я пытаюсь двигаться, я покажу вам, что у меня есть для класса сопоставления:
public class SpaceLocationMap : ClassMapWithGenerator<SpaceLocation>
{
public SpaceLocationMap()
{
Component<SpaceCoordinate>(x => x.Coordinates, m =>
{
m.Map(x => x.x);
m.Map(x => x.y);
m.Map(x => x.z);
});
}
}
Проблема с этим сопоставлением Fluent NHibernate заключается в том, что оно не применяет уникальное ограничение к значениям SpaceCoordinate вместе. Имейте в виду, что я не пытаюсь сделать каждую из них уникальной по отдельности, это было бы слишком ограничительно.
Итак, как бы вы сопоставили это с помощью файла карты hbm или fluent?
Любая помощь будет принята с благодарностью, спасибо за чтение!