Я использую 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 или беглым файлом карты?
Любая помощь будет принята с благодарностью, Спасибо за чтение !!